如何使用命令行推送"undo pushed commit"?


编辑:好的,我来解决。问题是我如何说出分支机构的名称。它应该是git push -f origin card-editor而不是git push -f origin/card-editor。谢谢

我使用git的大部分时间都使用sourcetree。除了当";重大灾害;事情发生了。这是(对我来说(情况之一。长话短说,我做了一个提交和推送,但现在我想在本地撤消它,也想在远程撤消它。

我从这里开始学习教程。我成功地把reset --hard的头交给了最后一个好的承诺。现在只需要将它推送到服务器上。

教程的方法看起来很简单。

git push -f branchname

我的功能分支远程名称是";卡片编辑器";。所以我做到了。

git push -f 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

但它仍然显示出";原点/卡片编辑器";似乎不是git存储库。

我的方法出了什么问题?我不认为这里有什么特别的事情需要做吗?我不是特别精通Git,尤其是控制台命令,因为我通常使用sourcetree来管理它

如果您真的已经将不需要的提交推送到远程,那么这里最安全的方法是还原提交:

# assuming the unwanted commit is on the top of the branch
git revert HEAD
git push origin master

命令git revert添加了一个新的提交,该提交在功能上撤消了您的提交所引入的任何更改。这种方法比git reset更安全,因为后者重写历史,因此在提交已经推送到远程时不适用。

最新更新