我正在使用SourceTree。所以我做了一些提交/推送(它们在远程),我需要撤消它们。我试图反转'改变它没有做我预期的事情(即没有解决我所遇到的问题)。所以我将主服务器重置为特定的提交。代码再次起作用,但我现在已经提交了6个提交。如何使用重置状态更新分支(即,在工作提交之后清除所有内容)?
我之前已经知道这样的问题,但我仍然无法弄清楚如何解决这个问题。
感谢。
答案 0 :(得分:2)
git push -f origin master
强制将本地环境的状态推送到原点。这通常是不鼓励的,因为您通常无法确定是否有其他人与原始代码进行了互动。如果这是个人项目,您可以在不造成任何损害的情况下执行此操作。如果你是一个团队,你应该让每个人都知道你要做什么。
答案 1 :(得分:2)
正如Ryan在回答中提到的,当其他用户也在使用您的存储库时,执行强制推送可能是至关重要的。或者,您可以使用git revert
有选择地还原违规提交。这会创建新的提交,以反转原始提交的更改。
当您将主服务器重置为给定提交(并且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
将它们压缩到单个提交中。