Move commits from master onto a branch using git

余生颓废 提交于 2020-01-09 06:04:30

问题


I'm trying to learn how to use Git effectively and I'm wondering how I should (good practice/bad practice?) solve the following case:

Say I have the following chain of commits in master:

  • Initial commit
  • Commit 1
  • Commit 2
  • Commit 3

Then I realize that what's done in the last two commits is completely wrong and I need to start from Commit 1 again. Questions:

  • How should I do that?
  • Can I move Commit 2 and 3 to a separate branch to keep for future reference (say they weren't that bad after all) and continue working from Commit 1 on master?

回答1:


git branch tmp            # mark the current commit with a tmp branch
git reset --hard Commit1  # revert to Commit1

The SO answer "What's the difference between 'git reset' and 'git checkout' in git?" is quite instructive for that kind of operation

A git reset --hard HEAD~2 would do the same thing (without needing to get back the SHA1 for Commit1 first).

Since Commit2 and Commit3 are still reference by a Git ref (here a branch), you can still revert to them anytime you want (git checkout tmp).


Actually, Darien mentions in the comments (regarding moving Commit2 and Commit3 to another branch):

Accidentally committed to the wrong branch, this let me move it, did:

git checkout correctbranch
git rebase tmp
git branch -d tmp

This works here since the initial branch has been reset to Commit1, which means the git rebase tmp will replay every commit after Commit1 (so here Commit2 and Commit3) to the new 'correctbranch'.



来源:https://stackoverflow.com/questions/3719068/move-commits-from-master-onto-a-branch-using-git

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!