02_再入Git之分支操作
1)什么是分支
在版本控制中,同时推进多个任务。创建每个任务的单独分支。一位置程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候不会影响主线分支的运行。可以简单理解为副本。(分支的底层是指针的引用)
2)分支好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在并发过程中,某一分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可
3)分支的操作
名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支 |
3.1)git branch -v(查看分支)
$ git branch -v
* master 3311fae first commit
当前一条分支
3.2)git branch 分支名(创建分支)
创建分支
$ git branch hot-fix
查看分支
$ git branch -v
hot-fix 3311fae first commit
* master 3311fae first commit
3.3)git checkout 分支名(切换分支)
- 切换到创建的分支
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'
查看分支,已经指向到了hot-fix
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (hot-fix)
$ git branch -v
* hot-fix 3311fae first commit
master 3311fae first commit
- 修改完后提交到暂存区和本地库
$ vim hello.txt
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (hot-fix)
$ git add hello.txt
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (hot-fix)
$ git commit -m "hot-fix" hello.txt
[hot-fix 2f33b94] hot-fix
1 file changed, 1 insertion(+), 1 deletion(-)
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (hot-fix)
$ git status
On branch hot-fix
nothing to commit, working tree clean
- 切换回原先的分支
$ git checkout master
Switched to branch 'master'
3.4)git merge 要合并的分支名(合并分支)
- 合并分支
当前分支合并其他分支需要在当前分支执行git merge 被合并的路径
$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.
- 查看hello.txt的内容(冲突)
原因:两个分支修改了不同的内容(行)
$ cat hello.txt
<<<<<<< HEAD
hello 你好你好你好啊修改修改修
hello 你好你好你好啊第二次修改u
hello 你好你好你好啊
hello 你好你好你好啊
=======
hello 你好你好你好啊
hello 你好你好你好啊
hello 你好你好你好啊
hello 你好你好你好啊hot-fix修改
>>>>>>> hot-fix
hello 你好你好你好啊
hello 你好你好你好啊
hello 你好你好你好啊
hello 你好你好你好啊
hello 你好你好你好啊
hello 你好你好你好啊
- 手动合并冲突代码
处于合并状态中:
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (master|MERGING)
1.进入文档内修改
$ vim hello.txt
2.手动保存需要留下的内容
3.将文件存入暂存区
$ git add hello.txt
4.将文件上传到本地库
$ git commit -m "merge" hello.txt
fatal: cannot do a partial commit during a merge.
保存失败,因为合并后的提交到本地库中不需要添加文档名称,正确写法如下:
$ git commit -m "merge"
[master 17054da] merge
合并完成后:
王杰@wangjie MINGW64 /d/GitSpace/git-demo1 (master)
合并冲突代码始终在合并支线上进行数据操作,被合并的支线的数据不会发生变化