文章目录
1、分支操作
1.1 查看所有分支
git branch
1.2 分支创建
git branch v1
git branch v1 master #从master创建一个分支v1
git checkout v1 #创建v1分支并切换
git checkout v1 master #从master创建一个新的分支并切换
1.3 分支切换
git checkout v1
1.4 分支合并
git merge v1 #将v1分支内容合并到当前分支。
注意:分支合并有两种情况。以当前在master,要将v1合并到master为例
- 如果v1是master创建出分支后进行commit操作后的分支,且master指针未前移(master上没有commit或其他分支merge过来),那么合并是fast forward的,即直接将master移动到v1即可
- 如果v1是master创建出分支后进行commit操作后的分支,且master指针前移过了(master上有commit或其他分支merge过来)。此时master和v1有共同的父节点。这时将v1merge到master上就是在master前面再新创建一个节点,然后将v1内容merge过来,并把master指针前移到新创建的节点上。
1.5 分支删除
git branch -d v1
- 若无其他分支和v1指向同一个地方,删除v1意味着删除了从v1父节点到v1这里的所有操作。
- 反之,只是删除了v1的信息。无其他影响。
2、冲突解决
有分支合并就可能会有冲突。冲突是如何产生的呢?
如果修改了两个带合并分支里同一个文件的同一部分,就会产生分支,git就无法合并。这种情况下只能由人来进行解决。
在冲突时可以利用git status查阅冲突的文件,会有提示。
在人工解决完后再merge就不会有冲突了。
3、远端分支
3.1 远端分支的表示
远程仓库名/分支名
- 首先明确本地分支和远端分支是两个,即便名称相同的也是两个。git clone仓库时会同事建立本地分支master和远端分支origin/master,它们都指向origin/master的最后一次提交。
3.2 推送到远端
git push origin master
git push [远端仓库名] [本地分支]:[远端分支] #这是全写 默认本地分支为当前分支
3.3 获取远端分支内容
git fetch origin [远端分支]:[本地分支]
#默认远端分支是master。即不写远端分支时,会拉去master
#默认不创建本地分支。即不写本地分支时,只将远端分支拉取回来。如果写了本地分支名,会在拉取回的远端分支名基础上,再创建一个新的本地分支
- 值得注意的是,fetch回来远端的分支后,是无法对远端分支操作的,如果想对其操作,需要git branch或git checkout -b新的分支,然后进行操作
3.4 比较获取的远端分支和自己的分支
比较差别是为了更好的merge
git diff 本地分支名 远端仓库名/远端分支名
3.5 删除远端分支
git push origin :v1 #git push origin :[远端分支名]
4、常见开发模式
一般来说,多人开发时会创建master、develop、user1、user2…多个分支
master用来发布稳定版本
develop用来合并多人的分支,作为稳定版本之间的版本
多个用户都在user1 user2 user3上开发。
通常来说,各个用户都提交到各自的分支上,并时不时的向远端自己对应的分支push。
若阶段工作做完了,则merge到develop分支。在develop分支无误后,merge到master分支。
有一个人专门管理各个用户分支的合并工作(即将各个用户远端分支merge到develop上)。
同时,为了获取他人开发的代码(从develop获取),也需要将develop上的内容fetch回本地,然后将其merge到自己的分支上。