Nik*_*as9 88 git github bitbucket
在我们的回购中,我们最终会收到很多这样的提交:
Merge branch 'master' of bitbucket.org:user/repo
Run Code Online (Sandbox Code Playgroud)
每当开发人员将他/她的本地分支同步到顶级仓库时,就会发生这种情况.
无论如何要避免这种合并提交地狱混乱所有的回购日志?在以某种方式启动拉取请求时可以避免它们吗?
我知道如果仅在我的本地VM中完成,我可以执行git rebase,GitHub/BitBucket UI中是否有任何等价物?
你们是怎么做到的?
Tod*_*obs 122
如果要避免合并提交,则需要确保所有提交都是快进的.这样做是为了确保您的功能分支在合并之前干净地重新定位到您的开发线上,如下所示:
git checkout master
git checkout -b feature/foo
# make some commits
git rebase master
git checkout master
git merge --ff-only feature/foo
Run Code Online (Sandbox Code Playgroud)
Rebase还有很多标志,包括带有-i
标志的交互式变基,但是如果你保持尽可能简单并想要在合并时保留所有分支历史记录,则可能不需要.
--ff-only
标志除了变基,使用该--ff-only
标志将确保只允许快进提交.如果它将是合并提交,则不会进行提交.git-merge(1)手册页说:
--ff只
拒绝以非零状态合并和退出,除非当前HEAD已经是最新的,或者合并可以解析为快进.
Kon*_*aka 12
“Todd A. Jacobs”已经提到“rebase”是这里的概念。这只是一种更详细的做事方式。
假设你在 master 分支上
$ git branch
* master
Run Code Online (Sandbox Code Playgroud)
你想要修复,所以创建一个从 master 分支的“fixbranch”
$ git checkout -b fixbranch
Run Code Online (Sandbox Code Playgroud)
也许你会在这个分支上工作几天并有几次提交。
您想将提交推送到中央主存储库的那一天!结帐 master 并从中央 master repo 获取最新更改
$ git checkout master
$ git pull origin master
Run Code Online (Sandbox Code Playgroud)
使用 master 重新定位您的 fixbranch 以拥有干净的历史记录并解决本地存储库本身中的冲突(如果有)。
$ git checkout fixbranch
$ git rebase master
Run Code Online (Sandbox Code Playgroud)
现在 fixbranch 已更新到中央主分支,让我将 fixbranch 合并到主分支
$ git checkout master
$ git merge fixbranch
Run Code Online (Sandbox Code Playgroud)
我受够了!让我把本地master推到中央master
$ git push origin master
Run Code Online (Sandbox Code Playgroud)
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
归档时间: |
|
查看次数: |
26786 次 |
最近记录: |