使用git协同开发是否对提交的大量无用合并代码记录感到烦烦烦,没啥用又不想看到,就像下图一样,如何让提交、合并记录更简洁明呢?请往下看:
官方说不能直接使用merge,最好先使用rebase;
因为如果直接使用merge会将自己新增的功能与最新的版本合并成一个新的版本。而使用rebase是先把最新的版本拉下来,并把自己新增功能的改动编辑在最新的版本里,这样再次提交时,我们新增的改动就是一个独立的版本而不是与某个版本合并所产生的版本。
1.git remote -v 先查看下起源避免出错
2.git checkout ChangeCode 先切换到自己的项目分支
3.git log 查看下日志,并判断需要将多少个日志合并,:wq切换到输入模式;
4.git rebase -i HEAD~3 把顶部的3个版本聚到一起进入编辑页面
5.把需要压缩的日志前面的pick都改为s(squash的缩写)
这里要注意必须保留一个pick,如果将所有的pick都改为了s那就没有合并的载体了就会报如下错误
7.使用vim指令把每个message之间的空格行给删除,并输入:wq
最终达到的效果是这样 Successfully rebased and updated refs/heads/xxx
然后保存退出,git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:
git add .
git rebase --continue
如果你想放弃这次压缩的话,执行以下命令:
git rebase --abort
如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:
8. 想获取develop的最新版本必须先切换到develop --------git checkout develop
9. git pull origin develop 获取最新的develop版本
10. 需要先切换到自己的分支,才能对develop进行rebase -----git checkout NewFix
11. git rebase develop 把自己新开发的功能快进最新版本
12. 这时候需要先切换到主干才能把自己的分支合并 ------git checkout develop
13. git merge NewFix 这时候才能合并
14. git push origin develop 推到自己的起源代码仓库
15. 在网页上创建pull request向管理员提交变更
附加几个常用指令:
git branch 查看分支
git reflog 查看这个项目的修改记录
git log --graph --oneline 显示前六位log码和对应的message
git checkout -b NewFix 在主分支上建立一个新的分支。
git cherry-pick ChangeBadCode 在新的分支上复制旧分支的改变
git branch -d ChangeBadCode 删除一个分支。 -D是强制删除
git add . 把改动全部加上。 (可以先用git status显示出不同的diff)然后add 单个文件
git commit --amend 给刚提交的commit订一下,但是不生成log