git - 如何撤消尚未推送的提交?

标签 git github version-control

我在没有推送的情况下进行了两次提交。已经有多个其他提交推送到我的分支。我还没有取消那些 promise 。我想销毁我的两个未被推送的提交,然后只获取其他多个已被其他人推送的提交。有人可以帮我解决这个问题吗?

我想一个一个地覆盖这两个提交。但我想保留我的其他更改。这行得通吗?

最佳答案

如果您有两个尚未推送的提交,并且您根本不需要它们,那么您应该重置为想要开始然后 pull 的提交,而不是反转。

那么,我假设你有以下情况。

$ git log --oneline --graph
* fde0ba4 Commit 2 (don't want)
* d7be6f3 Commit 1 (don't want)
* 7a70e45 Before my new commits (start here!)
* db58591 Even earlier
...

等等。您不想要前两次提交,但您想要第三次之后的提交。第一步是重新回到您想要开始的地方。

git reset --hard 7a70e45

请注意,这是一个破坏性操作——您将丢失这些提交以及这些提交的内容,因此请谨慎操作!参见 the git reset documentation如果您不确定 --hard 是否合适。

重置后,你应该可以毫无问题地 pull 。

git pull

关于git - 如何撤消尚未推送的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705168/

相关文章:

javascript - git : How to move git folder inside subfolder and rewrite history to pretend it always was like that?

git - 跟踪在 GitHub 上创建的新远程分支

git - 我应该在版本控制中忽略哪些由 Visual Studio 2017 创建的文件?

git - 语义版本控制如何融入 git 工作流程

git - 存储在 refs/heads 之外的 ref 是否可以被视为分支并作为普通分支 check out 和工作?

git - bang 似乎不排除 .gitignore 中的文件

android - 无法解决:com.github.mopa11:MainDemo1:1.0.0

Java 获取最新的 GitHub 版本

git - 将具有公共(public)主干的大型 SVN 存储库迁移到 Git

svn - 来自同一用户的相同连续提交消息