用例:相同存储库A,B,B2的三个git克隆。 Repos A和B是正常的,B2是裸的(用--bare制造)。一切都在我的控制之下,即只有一个用户。
在网站B上,我做工作(几个git提交),然后git push B2。
我能做到:
但这不太对。在git pull B2之后,站点B工作目录将有一个奇怪的历史记录。
我需要一些不使用--force的方法。我想扔掉xx..HEAD B2,然后正常从A推。也许:
在B2(裸体回购)
不确定是否足够。我可以通过从站点A重新克隆(删除B2,git init --bare,从A推送)来做到这一点,但这看起来有点矫枉过正。 How to push/pull Git rebase帖似乎相关,但我希望除了“不要这样做”之外还要回答一些问题。
最重要的是,我如何真正完全抛弃对B2的提交,以便A中的重新历史记录被接受为新的提交?
答案 0 :(得分:4)
git reset --hard
只是在你希望它们被抛弃的意义上抛弃提交。
答案 1 :(得分:1)
嗯,扔掉B2上的xx..HEAD,然后从A正常推送就是我需要一些不使用--force的方法。我想扔掉xx..HEAD B2,然后从A正常推送。
--force
的确切定义。只需在拉到B时再次使用--force
,你就可以了,只要你将B中的任何分支重新设置为提交xx或更早提交之前。