我正在与某人合作开展一个项目,所以我们决定使用git.不幸的是,我们经常在没有互联网的地方编码,所以我们最终会得到这样的结果:
origin/master: A---B---C
\
mylocalmaster: D---E---F
\
hismaster: G---H---I
Run Code Online (Sandbox Code Playgroud)
现在,说他推动他的提交并得到这个:
origin/master: A---B---C---G---H---I
\
master (local): D---E---F
Run Code Online (Sandbox Code Playgroud)
我想做的就是推动我的提交,以便在我的本地仓库和在线仓库中获取:
A---B---C---D---E---F---G---H---I
Run Code Online (Sandbox Code Playgroud)
它似乎工作,当我做git push,但是当我做的麻烦出现git fetch,然后git merge.我所要做的就是让他的提交进入我的本地仓库,但我最终得到了一个合并提交,就像Merge remote-tracking branch 'origin/master'它的消息一样.
我不想进行这种无意义的提交,因为我们的提交中没有冲突的代码.我们正在处理完全不同的文件,因此没有理由进行此提交.如何防止git创建此合并提交?
Raf*_*cki 31
您可以通过使用rebase而不是merge来省略创建合并提交.
正如@Dougal所说,如果你这样做git fetch,你可以在git rebase之后执行以将更改的基础更改为已获取的更改HEAD.
通常,您通过从远程存储库中提取来创建那些不需要的合并提交.在这种情况下,您可以添加--rebase选项:
git pull --rebase
Run Code Online (Sandbox Code Playgroud)
或者向Git配置文件添加适当的选项(本地):
git config branch.<branch-name-here>.rebase true
Run Code Online (Sandbox Code Playgroud)
或者对于所有新的存储库和分支:
git config branch.autosetuprebase always --global
Run Code Online (Sandbox Code Playgroud)
然而,rebasing创建更清晰,更线性的历史,创建合并提交是很好的,两个分支都有大量的变化(用于git merge这样做).
使用git rebase(在a之后git fetch)使你的提交适用于他而不是对前一个主人.也就是说,转到ABCGHIDEF你的例子中.(你不能这样做ABCDEFGHI,而不必做了push -f,因为ABCGHI已经在origin/master和你不得不重写.)
| 归档时间: |
|
| 查看次数: |
10160 次 |
| 最近记录: |