我遇到了問題。我已經完成了對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