Git与Github入门实践----实验楼总结(二)

下内容的讲解:

Git 仓库的三大区域
修改工作区
将工作区的修改添加到暂存区
从暂存区撤销修改到工作区
查看提交历史
配置个人信息
完成一次提交
版本回退
处理提交时间线分叉问题
使用 git reflog 命令查看本地仓库版本变化

Git仓库的三大区域
Git 本地仓库有三大区域:工作区、暂存区、版本区。这是一个概念,有这个了解即可,随着使用 Git 的时间增多,慢慢就会理解这三个区域的作用以及为何要这么设计,学习阶段只需按照文档逐步操作即可。接下来我们以命令为主线介绍 Git 的操作。
分支创建与合并
Git 的分支可以让你在主线(master 分支)之外进行代码提交,同时又不会影响代码库主线。分支的作用体现在多人协作开发中,比如一个团队开发软件,你负责独立的一个功能需要一个月的时间来完成,你就可以创建一个分支,只把该功能的代码提交到这个分支,而其他同事仍然可以继续使用主线开发,你每天的提交不会对他们造成任何影响。当你完成功能后,测试通过再把你的功能分支合并到主线。
创建分支
一个 Git 仓库可以维护很多开发分支。现在我们来创建一个新的叫 experimental 的分支:

$ git branch experimental

运行 git branch 命令可以查看当前的分支列表,以及目前的开发环境处在哪个分支上:

$ git branch
experimental

  • master
    切换分支

experimental 分支是你刚才创建的,master 分支是 Git 系统默认创建的主分支。星号标识了你当工作在哪个分支下,输入 git checkout 分支名 可以切换到其他分支:

$ git checkout experimental
Switched to branch ‘experimental’

切换到 experimental 分支,切换完成后,先编辑里面的一个文件,再提交(commit)改动,最后切换回 master 分支:
#修改文件file1
$ echo “update” >> file1
查看当前状态
$ git status
添加并提交file1的修改
$ git add file1
$ git commit -m “update file1”
查看file1的内容
$ cat file1
test
update
切换到master分支
$ git checkout master

查看下 file1 中的内容会发现刚才做的修改已经看不到了。因为刚才的修改时在 experimental 分支下,现在切换回了 master 分支,目录下的文件都是 master 分支上的文件了。
合并分支

现在可以在 master 分支下再作一些不同的修改:

修改文件file2
$ echo “update again” >> file2
查看当前状态
$ git status
#添加并提交file2的修改
$ git add file2
$ git commit -m “update file2 on master”
#查看file2的内容
$ cat file2
test
update again

这时,两个分支就有了各自不同的修改,分支的内容都已经不同,如何将多个分支进行合并呢?

可以通过下面的 git merge 命令来合并 experimental 到主线分支 master:

切换到master分支
$ git checkout master
将experimental分支合并到master
$ git merge -m ‘merge experimental branch’ experimental

-m 参数仍然是需要填写合并的注释信息。

由于两个 branch 修改了两个不同的文件,所以合并时不会有冲突,执行上面的命令后合并就完成了。

如果有冲突,比如两个分支都改了一个文件 file3,则合并时会失败。首先我们在master分支上修改file3 文件并提交:

切换到master分支
$ git checkout master
#修改file3文件
$ echo “master: update file3” >> file3
提交到master分支
$ git commit -a -m ‘update file3 on master’

然后切换到 experimental,修改 file3 并提交:

切换到experimental分支
$ git checkout experimental
修改file3文件
$ echo “experimental: update file3” >> file3
提交到experimental分支
$ git commit -a -m ‘update file3 on experimental’

切换到 master 进行合并:

$ git checkout master
$ git merge experimental
Auto-merging file3
CONFLICT (content): Merge conflict in file3
Automatic merge failed; fix conflicts and then commit the result.

合并失败后先用 git status 查看状态,会发现 file3 显示为 both modified,查看 file3内容会发现:

$ cat file3
test
<<<<<<< HEAD
master: update file3

experimental: update file3

experimental

上面的内容也可以使用 git diff 查看,先前已经提到 git diff 不加参数可以显示未提交到缓存区中的修改内容。

可以看到冲突的内容都被添加到了 file3 中,我们使用 vim 编辑这个文件,去掉 Git 自动产生标志冲突的 <<<<<< 等符号后,根据需要只保留我们需要的内容后保存,然后使用 git add file3 和 git commit 命令来提交合并后的 file3 内容,这个过程是手动解决冲突的流程。

编辑冲突文件
$ vim file3
#提交修改后的文件
$ git add file3
$ git commit -m ‘merge file3’

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值