我有两个提交(A和B),我想将我的代码还原为提交A,但我希望将提交B中更改的所有文件应用于提交A。
有可能吗?
发布于 2016-11-03 10:31:48
是的,这是可能的;但有一两个警告。
如果您已经将提交A或B发布到共享存储库,那么这样做会给其他用户带来问题。如果您在A或B的“下游”有其他提交,则需要做额外的工作才能使一切保持一致。由于git存储信息的方式,在这两种情况下修改提交本身就是破坏性的。
但如果这两种情况都不是这样,那么使用git rebase就相当简单了。就像这样
git rebase --interactive A^这将打开一个编辑器,其中包含rebase“待办事项”列表,以及有关如何编辑待办事项列表的说明。您将把B的指令从pick更改为squash或fix-up。
发布于 2016-11-03 14:28:22
一种选择是重置为在提交A之前提交,然后再次提交。请记住,您需要在此处进行软重置。
假设你有这个层次结构的提交
HEAD
|
N -> A -> B将提交头移动到点N。git reset --soft HEAD~2
git status
如果您已经将您的工作推送到远程存储库,则可能需要使用force push才能将更改推送到远程存储库。
记住:将更改强制推送到远程将覆盖您在远程存储库中所做的工作。当心。
发布于 2016-11-03 11:45:41
git reset HEAD^^ // reset to front HEAD contain A and B's source
git add . // add A and B's source to new commit
git commit -m "A message" // commit A and B's source and add commit messagehttps://stackoverflow.com/questions/40392831
复制相似问题