可以应用2次提交中的所有更改文件吗?

时间:2016-11-03 02:21:32

标签: git

我有2个提交(A和B),我想恢复我的代码以提交A,但我想将提交B中的所有已更改文件应用于提交A.

有可能吗?

4 个答案:

答案 0 :(得分:1)

是的,这是可能的;但有一两个警告。

如果您已将提交A或B发布到共享存储库,则执行此操作将导致其他用户出现问题。如果你有其他提交“下游”的A或B,还有额外的工作要做,以使一切都符合要求。由于git存储信息的方式,在这些条件中修改提交本质上是具有破坏性的。

但如果这两种情况都不是这样,那么使用git rebase就相当简单了。像

这样的东西
git rebase --interactive A^

这将显示一个带有rebase“待办事项”列表的编辑器,以及有关如何编辑待办事项列表的说明。你会将B的指令从挑选更改为壁球或修复。

答案 1 :(得分:1)

一个选项是在提交A之前重置提交并再次提交。请记住,您需要在此处进行软重置。

假设你有这种提交层次结构

         HEAD
          |
N -> A -> B
  • 将HEAD移至N. git reset --soft HEAD~2
  • 它会将提交A和B中的所有更改都放到您的索引中,运行git status
  • 创建一个将同时更改A和B提交的新提交。

如果您已将工作推送到远程仓库,则可能需要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