2

我将一些更改推送到我们的中央 git 存储库,然后立即意识到我有一个旧的,现在已经过时的更改,并且我已经引入了与它的合并:

前

然后我使用 git rebase 摆脱了这个虚假的父级:

后

然后我把它推git push -f到原点。它回答“一切都是最新的”。

现在我希望中央存储库与我在本地拥有的存储库相匹配。但是,当我clone重新进行项目时,我仍然有那个虚假的父级。更糟糕的是 git 想要合并,如果我让它这样做,我会得到我最新的两次提交(一次是旧哈希,一次是变基后的新哈希)。

如何让 git 在不合并的情况下推送我拥有的内容,并将我的存储库状态作为新状态(基本上,拒绝所有远程差异)?

还是我做错了?我想摆脱“读取属性时...”提交,以及上图中的整个红线。

4

1 回答 1

1

您可以通过多种方式解决此问题。一种方法是使用重置、存储和提交在本地重建历史记录。以下将撤消您的最后一次提交(初始导入...)并隐藏这些更改。

git reset --mixed HEAD^
git stash

现在您可以将您的 master 重置为您进行合并之前的提交,假设 abcd1234 是“测试 git”的哈希。犯罪:

git reset --hard abcd1234

现在带回存储并再次提交:

git stash pop
git add .
git commit -m 'Initial import of the C++ client library.'

现在终于推高你重写的主人:

git push -f origin master
于 2012-04-05T14:59:44.120 回答