跳至主要內容

本地分支管理

张威大约 4 分钟gitgit

本地分支管理

作为开发人员,我们

  • git branch:查看本地分支
  • git branch -r:查看remote分支
  • git remote:查看remote分支
  • git branch -a:查看本地分支以及remote分支

小张在Windows操作,发现冒泡排序的效率太低,希望能改成快速排序。小张可以直接在本地master分支上进行代码修改,为了避免自己修改了master,然后push的时候和别人产生冲突,小张决定建立一个新的分支,在新分支上写自己的代码

  • git branch -vv查看本地和远程分支的对应关系

一、master分支没有改变,合并其他分支

  • git checkout -b 分支名创建新分支并切换

小张创建新分支sortdev,并切换到sortdev分支

小张这时已经工作在本地的sortdev分支,git pull同步远程和本地的分支

  • 我们发现,因为我们只在本地创建了sortdev,并没有指定远程的对应分支。而

切换回master分支,git pull同步代码后,切换回sortdev分支

小张将冒泡排序修改为快速排序后

修改代码后,从本地的sortdev分支

这样是,而输入的git push origin master的意思是把本地的master分支推送到远程的master,但是

  • git merge 分支名将指定分支的修改合并到本地分支

其实在master分支merge后,本地仓库就已经是合并sortdev后的结果了,由于在sortdev分支已经进行了add、commit,merge后不需要再在master上进行add、commit了,直接push即可

其实就是这样:我们在本地新建分支后,新建一个分支,然后在新的分支上修改代码,修改测试完成后再merge到master分支,然后从本地的master分支push

  • git branch -d 分支名删除分支,如果要删除分支上还

除了切换到master分支再push,还可以指定push到哪个远程分支

二、master分支有改变,合并其他分支

上一小节把sortdev01分支合并到master分支上时一切顺利,是因为sortdev01分支在合并的时候, master分支没有做过任何改动,看图:

实际上有可能发生这样的情况:

  • 啊亮从master分支创建了一个新的分支sortdev01,进行代码开发测试,提交
  • 小张更新了master分支上的代码
  • 啊亮直接git merge sortdev01就发生冲突了

实际操作如下

通过git diff命令查看一下README.MD文件的冲突,在master主干上手动解决冲突,并提交远程仓库

然后再通过git add、git commit、git push把修改推送到远程origin仓库的master主干分支上,冲突就解决完了

小结

  • 查看分支: git branch
  • 创建分支: git branch
  • 切换分支: git checkout
  • 创建+切换分支: git checkout -b
  • 合并某分支到当前分支: git merge
  • 删除本地分支: git branch -d 如果分支上有更新没有merge,git会提示你merge,强制删除用-D
  • 本地分支推送到远程分支:git push <远程仓库名> <本地分支名>:<远程分支名>
  • 远程分支合并到本地分支:git pull <远程仓库名> <远程分支名>:<本地分支名>