02_再入Git之分支操作

1)什么是分支

在版本控制中,同时推进多个任务。创建每个任务的单独分支。一位置程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候不会影响主线分支的运行。可以简单理解为副本。(分支的底层是指针的引用)

2)分支好处

  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 分支名(切换分支)

  1. 切换到创建的分支
王杰@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
  1. 修改完后提交到暂存区和本地库
$ 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
  1. 切换回原先的分支
$ git checkout master
Switched to branch 'master'

3.4)git merge 要合并的分支名(合并分支)

  1. 合并分支

当前分支合并其他分支需要在当前分支执行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.
  1. 查看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 你好你好你好啊
  1. 手动合并冲突代码
处于合并状态中:
王杰@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)

合并冲突代码始终在合并支线上进行数据操作,被合并的支线的数据不会发生变化

posted @ 2023-03-14 19:13  超重了  阅读(12)  评论(0编辑  收藏  举报