2

我正在使用 SourceTree。所以我做了一些提交/推送(它们在远程),我需要撤消它们。我试图“逆转”它没有达到我预期的更改(即没有解决我遇到的问题)。所以我将主人重置为特定的提交。该代码再次起作用,但是我现在落后了六个提交。如何使用重置状态更新分支(即在我正在进行的工作提交后清除所有内容)?

我知道以前有人问过这样的问题,但我仍然无法弄清楚如何解决这个问题。

谢谢。

4

2 回答 2

3

正如 Ryan 在他的回答中提到的,当其他用户也在使用您的存储库时,强制推送可能很关键。或者,您可以使用git revert. 这会创建新的提交来反转原始提交的更改。

当您将 master 重置为给定的提交(并且origin/master仍然指向原始远程分支提示)时,您可以使用以下命令恢复本地和远程分支之间的所有提交:

> git branch master-safe
> git reset --hard origin/master
> for COMMIT in $(git log --format="%H" master-safe..origin/master) ; do
    git revert --no-edit $COMMIT ; done

这将创建一个完整数量的提交。根据偏好,您现在可以推送这些提交(您的协作者将能够通过快进合并拉出这些新提交)或git rebase -i首先将它们压缩为单个提交。

于 2015-12-18T19:15:48.437 回答
2

git push -f origin master

将强制将本地环境的状态推送到原始状态。通常不鼓励这样做,因为您通常无法确定是否有其他人与源代码进行了交互。如果这是一个个人项目,您可以这样做而不会造成任何损害。如果你在一个团队中,你应该让每个人都知道你在做什么。

于 2015-12-18T18:25:55.610 回答