我遇到了问题。我已经完成了对master的几次提交。但我犯了一个错误。我需要在branch_a上进行这些提交。我如何取消master上的提交并将它们移动到branch_a。如何取消对提交的提交并将其移动到分支
2
A
回答
2
假设没有其他人已经看到你的变化,掌握和建立在它们之上的东西:
git checkout branch_a
git cherry-pick <commit sha> # for each commit you want on branch a
git checkout master
git reset <commit sha you want to move master back to>
如果有人有您意外高手顶部已建成的东西提交,那么你会想要git revert
而不是使用reset
。
2
如果你只是有几个提交,然后樱桃采摘它们可能是最简单的选择。您可以通过git log master
找到提交的哈希值。然后执行以下操作。
git checkout branch_a
git cherry-pick COMMIT_HASH_1
git cherry-pick COMMIT_HASH_2
...
git checkout master
git reset --hard COMMIT_HASH_BEFORE
所有COMMIT_HASH_#
你想移动到branch_a
和COMMIT_HASH_BEFORE
的提交是从你的错误提交之前提交哈希值。 (请注意,这会丢弃工作目录中的任何未提交的更改。)
请注意,如果您已将更改推送到master
,并且其他人可能已使用此分支,则您将改为git revert
同样承诺你樱桃采摘,否则你会为在分支上工作的其他人造成问题。 (恢复只是创建一个新的提交,撤消了以前的提交。)
1
最好的事情是重置主分支,但保持您的更改。使用樱桃挑选会用新的提交来玷污回购。假设你已经两次提交:
git checkout master
git reset --soft HEAD~2
git checkout branch_a
git commit -m "foo"
与--soft重置意味着你的更改将保持上演,它将把混帐的状态,因为它看起来你做的提交之前,所以你只需要切换分支并重新提交您的更改。
相关问题
- 1. 如何撤消提交并将更改提交到Git中的其他分支?
- 2. 如何将所有提交从特定提交移动到新分支
- 3. 移动提交到分支基地
- 4. git - 将分支“标记”移动到其他提交?
- 5. 在提交之前将提交提交到新分支
- 6. 将提交从一个分支移动到另一个分支
- 7. 如何将提交移动到另一个分支?
- 8. 如何将某个提交移动到NEW分支
- 9. 切换分支以及移动已提交但未提交的提交
- 10. Git从其他分支提取时要求提交消息
- 11. git分支撤消提交
- 12. 将推动提交到新分支
- 13. 如何将分支(或指定的提交)移动到另一个分支?
- 14. 将提交消息从分支转移到主设备
- 15. 如何将文件错误地添加到分支/提交到Git中的其他分支/提交?
- 16. 如何从合并分支移动提交?
- 17. 如何将所有提交从一个分支移动到另一个分支?
- 18. Git - 在提交其他提交后取消合并
- 19. 混帐:如何某些提交移动到新的分支
- 20. Git合并分支提交
- 21. 如何将自动分割提交到不同的分支?
- 22. 如何在添加多次提交后取消提交提交?
- 23. 将提交的更改从中继移动到分支
- 24. 如何从jQuery中获取数据并将其提交到表单提交?
- 25. 如何提交并创建分支?
- 26. Subversion将未提交的更改提交到一个新分支
- 27. 将最近一次提交的提交消息更新到本地分支
- 28. 如何找到提交的分支?
- 29. 如何在合并提交中移动提交?
- 30. 取消合并分支,保留合并后提交
branch_a是否已经存在?在master上是否有不在branch_a上的不想移动到branch_a的提交? branch_a是否提交了那个主控程序没有的提交? – 2012-03-12 01:53:50
啊,内脏;这可能有助于http://stackoverflow.com/questions/927358/git-undo-last-commit,如果我将是你我会恢复这些变化,然后重做我的功能分支(在你的情况下可能branch_a)并提交变化,希望这有助于,欢呼 – 2012-03-12 01:54:58
Tats_innit似乎有权利。你想做一个'git revert'和'git cherry-pick'的组合。 – Borealid 2012-03-12 01:56:04