使用git rebase定期将分支同步到master

时间:2010-05-13 05:43:32

标签: git branch git-rebase

我有一个Git存储库,其中一个分支几乎没有变化(没有其他人为此做出贡献)。它基本上是主分支,其中包含一些代码和文件。有了这个分支,我就可以轻松打包一个更精简的项目版本,而不必每次都手动删除代码和文件。

我一直在使用git rebase让这个分支与主人保持同步,但是当我尝试在重新定位后推动分支时,我总是会收到此警告:

To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

然后我使用git push --force并且它有效,但我觉得这可能是不好的做法。我希望这个分支能够快速,轻松地与主人保持“同步”。有没有更好的方法来处理这项任务?

更新

有关完整说明和解决方案,请参阅此主题:

git rebase and git push: non-fast forward, why use?

1 个答案:

答案 0 :(得分:3)

诀窍是:

  • 当您修改“模板”分支时,您会更改其历史记录(不同的SHA1),这意味着任何推送都不会是快进的(没有要添加的“新SHA1”),而是一组全新的SHA1替换)
  • 然后将该分支推送到non-bare repo(现在默认情况下已禁止)

这是一种不好的做法:

  • 如果其他人依赖于获取该分支(这不是这种情况)
  • 如果您依赖于您推送到的远程仓库的工作树的内容(因为该内容,如果设置为代表模板分支,则可能与您刚刚推送的实际模板分支不同步)< / LI>

如果这两点不是问题,你可以继续 但是(或者更多)“正确”的方式来处理这个问题就是有一个中间的裸仓(在远程服务器上)推送,然后从那个裸仓库中取出/拉出模板分支到你的其他服务器需要那个模板项目。