2017-05-30 112 views
1

错误地,我向主分支提交了多个提交。现在我想清理master分支并将所有提交从它移到一个全新的分支。我怎么做?我发现了几个类似的问题,但似乎没有提出所有以下提交。我做了以下操作:如何将所有提交从特定提交移动到新分支

git checkout -b bulk-work <hash of the first commit I made> 

我期待在第一次提交之后移动到新的分支之后,它会移动所有提交。相反,它将特定的提交及其父提交给新提交。我该如何做相反的事情,即将第一次提交和所有提交之后移动到新分支?

+0

这就是'git rebase'所做的,将提交到分支。 – t0mm13b

+0

git rebase会将一个分支的历史记录移动到已存在的第二个分支的历史记录中。我相信OP只是想将主分支的所有提交移动到一个新分支(git branch bulk-work)中,然后将主分支回滚到他/她意外提交到主分支的点(git reset --hard )。如果这是正确的理解,那么我的解决方案将起作用。 –

+0

如果它对你有效,Shijan Shrestha,请将我的答案标记为正确。谢谢! –

回答

2

如果我理解你想要正确地做什么,我这样做:

git checkout -b bulk-work 

就像你有点过那里。这本质上是所有主分支的副本。然后,我会做到这一点:

git checkout master 
git reset --hard <the hash of a commit to reset to> 

这使得它,这样你的主分支倒带一路你把任何哈希在“<>”。


我认为你可以做到这一点的方式来简化这个:

git branch bulk-work 
git reset --hard <hash> 

由于第一个命令我做使得一个新的分支,并检查出来。


做这些后,一定要签您的大量工作分支继续工作,直到你准备合并,我假设你从那里知道的。

+0

我测试了这个,并且它工作正常。 –

+0

工作!非常感谢你。你能不能提出这个问题?我认为这是一种常见的情况,其他人可能会觉得有用。 –

相关问题