如何避免重复的消息`更新被拒绝,因为遥控器包含你做的工作...`?

时间:2018-03-08 14:25:11

标签: git git-pull

我正在与另外三位合作者合作开展一个项目,我的情况是:

每次我尝试添加新的提交并且远程中有一些更改(即使它是我在本地没有工作的文件),我得到以下消息,迫使我创建一个合并以下默认消息:

error: failed to push some refs to 'https://work.git.beanstalkapp.com/app.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

只有在遥控器没有变化时才会避免这种情况。

这导致许多提交在提交历史记录中看起来像Merge branch 'master' of https://work.git.beanstalkapp.com/app,我想避免这种情况。

我找到了相关的question,因为有些使用git push -f origin master的人正在使用,但使用--force让我担心。我不想破坏这个项目。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

如果你处理真正不同的文件,那么将你的工作分开在不同的Git分支上是有意义的。

每个人都独立工作,你就不会有这个消息。

您可以在需要时将新分支合并到一个公共分支中。

答案 1 :(得分:1)

您希望在远程分支上执行本地工作的变基。您可以通过将--rebase标记添加到git pull

来执行此操作
git pull --rebase origin branch

或者你可以获取遥控器,然后明确地重新定位:

git fetch origin
git rebase origin/branch

请注意,这会使您在本地明确表达的所有合并变平。您可能需要添加--preserve-merges / --rebase=preserve以避免这种情况(请阅读手册页以获取详细说明)。

另请注意,rebase会重写历史记录!完成rebase后,重新提交的提交的提交ID将发生变化。