1.git branch 查看分支
- git branch 列出所有本地分支
- git branch -r 列出所有远程分支
- git branch -a 列出本地、远程所有分支
- git branch <branchname> 在本地创建新的分支
2.git checkout <name>切换分支
git checkout b1 切换到b1分支,如果说b1分支和之前分支不一样,文件夹会自动变化,比如说main分支文件夹内容:
使用git checkout b1后
文件夹内容是
会自动更新内容
3.git push <shortname><name>
在b1下创建b1.txt并上传至b1分支git push origin b1
在main分支下没有b1.txt但在b1分支下有这个文件
4.git merge <name> 合并分支
我们在b2分支也新建了b2.txt并提交至远程,我们现在想将b1,b2分支的修改合并到main分支,先切换到主分支,然后git merge b1
输入git merge b1后会进入vim编辑器,让你输入这次merge的信息,我们可以不写,直接esc 然后:wq回车退出
可以看出b1.txt已经在main分支下了
然后git merge b2,重复同样操作,b2.txt也在文件夹下了
5.分支冲突解决
在main分支下的b1.txt修改内容并提交至远程仓库
在b1分支下的b1.txt修改内容并提交至远程仓库
现在将main b1合并,首先会到main分支,然后git merge b1
会发生错误,有冲突conflicts,我们需要先解决冲突再合并
此时我们打开b1.txt,如下图所示
我们要在这个文件里解决冲突,我们可以同时保留b1和main修改的内容来解决冲突
那如何告诉git我们解决了冲突呢?
使用git add命令把b1.txt加入暂存区
此时,远程并没有记录merger操作,就是说,merge操作现在其实并没有执行
然后我们现在git commit就行,注意,后面要加参数-i
处理完冲突,就可以提交至远程仓库了
此时main分支已经修改完成,但是b1分支并没有,内容还是
那如何将主分支关于处理冲突的结果同步到b1分支呢,首先git checkout b1,然后git merge main即可(这里不仅同步了b1.txt,其他main与b1不同的地方也会一起merge