Py学习  »  Git

Git-如何在错误的本地分支中撤消提交?

webworm • 5 年前 • 916 次点击  

我的Git设置是这样的:我在本地的“功能”分支中工作,并在工作时提交对此分支的更改。当代码准备好后,我就合并到本地的“开发”分支中。然后,我将本地“开发”分支中的更改推送到远程“开发”分支。

我对一个文件做了一些更改,并提交了它们,但没有意识到我是在本地的“开发”分支上,而不是在我的“功能”分支上。在将“开发”分支推到远程“开发”分支之前,我意识到了自己的错误,因此更改仍然是本地的。

如何撤消对本地“开发”分支的此提交?我使用的是tortoise git,但如果需要,我仍然可以使用git命令行。

注意:这不是我第一次提交到功能分支或第一次合并到开发分支。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30765
 
916 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Alexander Nied User123
Reply   •   1 楼
Alexander Nied User123    5 年前

所以,我们来谈谈如何将这些提交转移到特性分支,然后撤消它们。就本解释而言,我们假设您的 develop 局部分支。

  1. 获取每个错误提交的提交哈希 发展 . 您可以在图形用户界面中执行此操作,也可以签出 发展 并运行 git log 在终点站。复制粘贴到你以后可以参考的地方。

  2. 结帐 feature 分支机构。现在您将运行 git cherry-pick <commit_hash> 对于您在步骤1中保存的每个提交哈希。你想按他们承诺的顺序来做 发展 分支机构。这会将这些提交中的每一项重播到本地 特征 分支机构。

  3. 对您的 发展 分支以将其恢复到远程版本。假设远程引用是 origin/develop 你会的。 git reset --hard origin/develop

注意,还有其他方法可以做到这一点,使用 git rebase 或者使用交互式钢筋。这是我能想到的最简单的方式来传达给一个谁有一个未知量的git经验。

请注意,如果您担心在事情不按预期发展的情况下能够恢复,您可以利用 git tag 制作救援标签。

Code-Apprentice
Reply   •   2 楼
Code-Apprentice    5 年前

如果忘记为功能创建分支,则应创建一个分支:

git branch feature

然后你可以重置 develop 回到它应该在的地方:

git reset --hard HEAD~

如果你已经有了 feature 分支到您希望将意外提交的内容移动到的位置 发展 ,然后您可以使用 git cherry-pick :

git checkout feature
git cherry-pick develop

然后你可以重置 发展 如上所述。一定要先看看:

git checkout develop
Bill
Reply   •   3 楼
Bill    5 年前

有几种方法可以解决这个问题。一种方法是 cherry-pick 你的承诺 feature 分支机构。然后 reset 你的 develop 分支到上一个提交。

  1. git checkout feature
  2. git cherry-pick <commit hash>
  3. git checkout develop
  4. git reset --hard HEAD~1