我有2个提交(A和B),我想恢复我的代码以提交A,但我想将提交B中的所有已更改文件应用于提交A.
有可能吗?
答案 0 :(得分:1)
是的,这是可能的;但有一两个警告。
如果您已将提交A或B发布到共享存储库,则执行此操作将导致其他用户出现问题。如果你有其他提交“下游”的A或B,还有额外的工作要做,以使一切都符合要求。由于git存储信息的方式,在这些条件中修改提交本质上是具有破坏性的。
但如果这两种情况都不是这样,那么使用git rebase
就相当简单了。像
git rebase --interactive A^
这将显示一个带有rebase“待办事项”列表的编辑器,以及有关如何编辑待办事项列表的说明。你会将B的指令从挑选更改为壁球或修复。
答案 1 :(得分:1)
一个选项是在提交A之前重置提交并再次提交。请记住,您需要在此处进行软重置。
假设你有这种提交层次结构
HEAD
|
N -> A -> B
git reset --soft HEAD~2
git status
如果您已将工作推送到远程仓库,则可能需要force push
才能将更改推送到远程仓库。
请记住:将更改强制推送到远程将覆盖您的工作 在远程回购。小心。
答案 2 :(得分:0)
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 message
答案 3 :(得分:0)
首先以这种方式找出在特定提交中修改的文件(供参考):
git show --pretty="" --name-only COMMIT_ID
要恢复任何特定的提交ID,只需使用:
git revert COMMIT_ID