如何使用命令行推送 "undo pushed commit"?
How to push "undo pushed commit" using command line?
编辑:好的,我解决了。问题是我如何陈述分支名称。它应该是 git push -f origin card-editor
而不是 git push -f origin/card-editor
。谢谢。
大部分时间我使用 git,我使用 sourcetree。除非发生“大灾难”的事情。这是其中一种情况(对我而言)。长话短说,我提交并推送,但现在我想在本地撤消它,以及在远程撤消它。
我遵循 here 中的教程。我成功地reset --hard
head 到最后一个好的commit。现在只需要推送到服务器即可。
教程的方法看起来很简单。
git push -f branchname
我的功能分支远程名称是“card-editor”。所以我做到了。
git push -f card-editor
但我收到错误提示“card-editor”似乎不是 git 存储库。
我用 git branch -r
列出了我的分支列表。
origin/HEAD -> origin/master
origin/card-editor
origin/development
origin/staging
origin/production
好的,所以我认为分支名称是 origin/card-editor
。所以我重试了。
git push -f origin/card-editor
但它仍然显示“origin/card-editor”似乎不是 git 存储库。
我的方法有什么问题?我不认为这里需要做一些特别的事情吗?我不是特别精通 Git,尤其是控制台命令,因为通常我使用 sourcetree 来管理它。
如果您真的已经将不需要的提交推送到远程,那么这里最安全的方法是 还原 提交:
# assuming the unwanted commit is on the top of the branch
git revert HEAD
git push origin master
命令 git revert
添加了一个 new 提交,它在功能上撤消了您的提交引入的任何更改。这种方法比git reset
更安全,因为后者重写历史,所以不是一旦提交已经被推送到远程就适合。
编辑:好的,我解决了。问题是我如何陈述分支名称。它应该是 git push -f origin card-editor
而不是 git push -f origin/card-editor
。谢谢。
大部分时间我使用 git,我使用 sourcetree。除非发生“大灾难”的事情。这是其中一种情况(对我而言)。长话短说,我提交并推送,但现在我想在本地撤消它,以及在远程撤消它。
我遵循 here 中的教程。我成功地reset --hard
head 到最后一个好的commit。现在只需要推送到服务器即可。
教程的方法看起来很简单。
git push -f branchname
我的功能分支远程名称是“card-editor”。所以我做到了。
git push -f card-editor
但我收到错误提示“card-editor”似乎不是 git 存储库。
我用 git branch -r
列出了我的分支列表。
origin/HEAD -> origin/master
origin/card-editor
origin/development
origin/staging
origin/production
好的,所以我认为分支名称是 origin/card-editor
。所以我重试了。
git push -f origin/card-editor
但它仍然显示“origin/card-editor”似乎不是 git 存储库。
我的方法有什么问题?我不认为这里需要做一些特别的事情吗?我不是特别精通 Git,尤其是控制台命令,因为通常我使用 sourcetree 来管理它。
如果您真的已经将不需要的提交推送到远程,那么这里最安全的方法是 还原 提交:
# assuming the unwanted commit is on the top of the branch
git revert HEAD
git push origin master
命令 git revert
添加了一个 new 提交,它在功能上撤消了您的提交引入的任何更改。这种方法比git reset
更安全,因为后者重写历史,所以不是一旦提交已经被推送到远程就适合。