本地分支管理
本地分支管理
作为开发人员,我们

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 <远程仓库名> <远程分支名>:<本地分支名>