我正在与另外三位合作者合作开展一个项目,我的情况是:
每次我尝试添加新的提交并且远程中有一些更改(即使它是我在本地没有工作的文件),我得到以下消息,迫使我创建一个合并以下默认消息:
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
让我担心。我不想破坏这个项目。
我怎样才能做到这一点?
答案 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将发生变化。