# 分支
其实很简单,就是来源功能驱动开发(Feature-driven developer,简称 FDD),协作开发就得有版本管理,管理的自然就是分支了。
功能驱动开发就是:需求来了,若是功能,则建立功能分支(feature branch);若是 bug,则建立补丁分支(hotfix branch)。完成开发后,该分支就合并到相应主分支,然后删除,版本发布后记得打上 git 标签。
# 新建/切换分支
1.新建分支
git branch branchName
2.切换分支:
- 本地有该分支,直接切换;
- 本地没有该分支,远程有,就检出远程分支;
- 本地和远程都没有,就报错;
git checkout branchName
3.切换分支:新建别切换分支,模板为当前分支
git checkout -b branchName
4.切换分支:新建并切换分支,模板为指定分支模板
git checkout -b branchName copyBranch
// 比如
git checkout -b dev origin/dev
5.切换分支:切换到上一个分支
git checkout -
# 重命名分支
git branch -m dev_1.0.0 feature_1.0.0
# 提交分支
git add .
git commit -m "提交信息"
# 查看分支
1.查看本地分支,本地当前分支会有*号标记
git branch
2.查看远程分支
git branch -r
3.查看所有分支
git branch -a
# 删除分支
1.删除本地已经合并过的分支,-d
是 --delete
缩写
git branch -d branchName
2.丢弃没有被合并过的分支
git branch -D branchName
3.强制删除,加参数 -f
或 --force
git branch -d branchName -f
4.删除远程分支
- 删除分支;
- 推送空内容,等于删除;
git push origin -d branchName
git push origin --delete branchName
git push origin :branchName
# 贮藏分支
本地有修改,未提交的,远程也有修改的,那就本地贮藏,然后获取远程,最后在获取本地贮藏。
1.贮藏工作区代码
git stash
git stash save "贮藏名称"
2.查看贮藏列表
git stash list
3.使用贮藏代码
// 使用后立即删除贮藏
git stash pop
// 使用后不删除贮藏
git stash apply
// 接着再删除
git stash drop
# 遴选
修复提交版本复制到当前开发分支
git cherry—pick commitId
# 同步分支
删除远程仓库已经删除的分支
git pull -p
-p
即 --prune
,修剪的意思,
# 合并分支
# merge 与 rebase
比如现在开发分支是这样的
1.merge 合并:会生成一个新的节点,之前的提交分开显示
2.rebase 合并:不会生成新的节点,将两个分支融合成一个线性的提交,就好像你从公共分支又重新拉出来这个分支一样,即重新设置基线
# 两者冲突如何解决
1.merge
解决冲突
git add .
git commit -m "解决冲突说明"
2.rebase
保持 master
分支是最新状态 git pull --rebase
,然后切换到 dev_1
分支,然后 git rebase master
1.解决冲突
2.git add .
3.git rebase --continue
重复1、2、3,直至出现输出 applying
解决完冲突,再切换到 master
分支,然后 git merge dev_1
# 总结一下
- 如果想要简洁的提交树,那就使用
rebase
,从而方便 code review; - 如果想看到合并过程记录,那就使用
merge --no-ff
; - 详细rebase信息可查看
# 选项参数说明
- 删除
-d
、--delete
- 强制
-f
、--force
- 强制删除
-D
、--delete --force
- 移动或重命名
-m
、--move
- 强制移动或重命名
-M
、--move --forece
- 远程
-r
、--remote
- 所有
-a
、--all