分支的基本操作
branchName
分支名称
- 创建
git branch branchName
- 切换分支
git checkout branchName
- 创建并切换到该分支
git checkout -b branchName
- 查看分支列表
git branch
- 将指定分支下的修改合并到当前分支
git merge branchName
- 删除指定分支
git branch -d branchName
- 强制删除没有被合并过的指定分支
git branch -D branchName
- 删除远程分支
git push origin --delete branchName
- 查看分支合并图
- 简洁的分支合并图
git log --graph --pretty=oneline --abbrev-commit
- 详细的分支合并图
git log --graph
冲突
<<<<<<< HEAD
冲突开始部分
=======
差异的分割
>>>>>>>
冲突结束部分
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
小结
有冲突的话,要先解决冲突,再进行add
commit
就可以合并了
分支管理策略
- 合并模式
Fast forward
快进模式,也是默认使用的模式。该模式下删除分支后,会丢掉分支信息。
--no-ff
禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样会更安全,而且有利于从分支历史上就可以看出分支信息 - 管理策略
master
将主分支作为发布版本的稳定分支
vice master
新开辟一个代表主分支的vice master,其他分支的提交都提交给该分支,由该分支将稳定的内容提交给master
other branch
开发调试的子分支
Bug分支
1、
stash
可以暂时储存工作区的修改内容,然后我们可以创建分支来进行修复Bug。
2、stash
可以存在多个,取对应的stash@{0}
就可以了
- 暂时存储工作区内容
- 存储
git stash
- 取出存储内容
- 取出后直接删除备份
git stash pop
- 取出后不删除备份
- 取出
git stash apply
- 删除
git stash drop
- 取出指定的stash内容
git stash apply stash@{0}
- 查看stash列表
git stash list
小结
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场
远程仓库
- 查看远程仓库信息
- 只查看远程仓库名称
git remote
- 查看详细的远程仓库信息
git remote -v
- 删除本地关联的远程仓库信息
git remote rm origin
- 推送分支
- 推送指定分支到远程仓库
git push origin branchName
- 注意。一般
master
和vice master
需要推送,其他修改Bug、增加功能的分支不需要提交给远程。
- 拉取远程仓库的内容到本地
git pull
- 本地分支与远程分支建立联系
git branch --set-upstream-to=origin/branchName branchName
- 向本地仓库添加远程库
git@gitee.com:userName/name.git
远程仓库的SSH地址,也支持HTTPS地址
git remote add origin git@gitee.com:userName/name.git
- 首次提交本地仓库到远程库
-u
将本地仓库master
与远程仓库master
进行关联
-f
覆盖远程仓库现有的内容
origin master
远程主分支
git push -u -f origin master
多人协作
- 多人协作工作模式
多人协作的工作模式通常是这样:
1、首先,可以试图用git push origin <branch-name>推送自己的修改;
2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3、如果合并有冲突,则解决冲突,并在本地提交;
4、没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
小结
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
- 修改合并冲突历史
- rebase操作可以把本地未push的分叉提交历史整理成直线;
- rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
git rebase