嘿,我是github的新手,所以请帮助我。不删除以前的提交并对其进行更改。
我有四个提交。
commit4 eh87eg87
commit3 e3e983jj
commit2 de6d6e3d
commit1 du3qw6y1
我想回去commit2并进行更改并提交(提交5),而不是像失去commit4,commit3,commit2和commit1该提交的其余部分。
嘿,我是github的新手,所以请帮助我。不删除以前的提交并对其进行更改。
我有四个提交。
commit4 eh87eg87
commit3 e3e983jj
commit2 de6d6e3d
commit1 du3qw6y1
我想回去commit2并进行更改并提交(提交5),而不是像失去commit4,commit3,commit2和commit1该提交的其余部分。
你可以尝试两件事:
git rebase --interactive <ID of the commit before commit1>
。阅读git为您打印的文档。基本上,你必须使用edit
而不是pick
为commit1
,amend
你的提交,然后继续rebase。git reset --hard <ID of the commit before commit1>
,然后按顺序执行每个提交并使用git cherry-pick <ID of commit>
复制它们,更改要更改的文件然后更改git commit --ammend
,然后转到下一个。你可以只创建另一个分支,这将成为你的“晃来晃去”款的标识,然后重置当前分支承诺2:
git branch temp_branch
(你可以在这里选择任何名称)git reset --hard de6d6e3d
(沙的承诺2)在步骤1中创建临时分支之后,你仍然会在你原来的分支。一旦你重置了它,你可以继续工作,如果你需要另外两个提交,只需结账temp_branch(或者用它来进行rebase,cherry-pick等)。
你可以尝试
git revert --no-commit de6d6e3d
... hack ...
git commit -m "re commit2"
,如果你找到了最好的解决方案,您可能要在此添加:https://git.wiki.kernel.org/index.php/GitSvnClient_(git-svn)
哦,我看错了一下,因为你要修复起来'commit2',你可以使用'commit1'作为提交的提交的ID,而不是commit1之前的提交。 –