2

我有一个 Git 存储库,其分支几乎不会更改(没有其他人为它做出贡献)。它基本上是去掉了一些代码和文件的主分支。有了这个分支,我可以很容易地打包我的项目的精简版本,而不必每次都手动剥离代码和文件。

我一直在使用git rebase使该分支与 master 保持最新,但是当我在变基后尝试推送分支时总是收到此警告:

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 和 git push:非快进,为什么要使用?

4

1 回答 1

3

诀窍是:

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

这是一个不好的做法:

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

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

于 2010-05-13T10:12:10.997 回答