如何制作上一个git提交的副本并使其成为头文件
我试着回复,但它总是让我产生恼人的冲突 我想要这样的东西: A-B-C-D-E-F A-B-C-D-E-F-D'如何制作上一个git提交的副本并使其成为头文件,git,github,Git,Github,我试着回复,但它总是让我产生恼人的冲突 我想要这样的东西: A-B-C-D-E-F A-B-C-D-E-F-D' 有没有一个简单的方法可以做到这一点 从您的帖子和评论中我可以看出,您希望恢复F和E,但将它们保留为历史记录。你能做的是: git revert HEAD~n..HEAD 如果您将n替换为头的后面(您当前的提交)D之后的提交是 这样做的目的是将HEAD和D之后的提交之间的每次提交按相反顺序还原,确保没有冲突 当该范围内存在合并提交时,这将变得更加复杂。如果有,请执行以下操作: git
有没有一个简单的方法可以做到这一点 从您的帖子和评论中我可以看出,您希望恢复
F
和E
,但将它们保留为历史记录。你能做的是:
git revert HEAD~n..HEAD
如果您将n
替换为头的后面(您当前的提交)D
之后的提交是
这样做的目的是将HEAD
和D
之后的提交之间的每次提交按相反顺序还原,确保没有冲突
当该范围内存在合并提交时,这将变得更加复杂。如果有,请执行以下操作:
git revert -m 1 HEAD~n..HEAD
它将首选合并提交的第一个父分支,并删除在其他分支中合并所引入的更改。做这件事时要非常小心,因为它可能不会达到你真正想要的效果。从你的帖子和评论中我可以看出,你想还原F
和E
,但要将它们保留为历史。你能做的是:
git revert HEAD~n..HEAD
如果您将n
替换为头的后面(您当前的提交)D
之后的提交是
这样做的目的是将HEAD
和D
之后的提交之间的每次提交按相反顺序还原,确保没有冲突
当该范围内存在合并提交时,这将变得更加复杂。如果有,请执行以下操作:
git revert -m 1 HEAD~n..HEAD
它将首选合并提交的第一个父分支,并删除在其他分支中合并所引入的更改。要非常小心地执行此操作,因为它可能不会完成您实际想要的操作。与公认的答案相反,我建议(假设您正在谈论主分支,您希望在保留跳过的分支的同时,将其延迟几次提交):
这会给你一个非常清晰的历史,而你移除的垃圾仍然存在
master
|
v
A-B-C-D
\
E-F
^
|
old_master
任何进一步的承诺都将导致历史的分歧
master
|
v
A-B-C-D-G-H
\
E-F
^
|
old_master
所以E和F永远不会弄乱你的“真实”历史,但你总是能够回到它们。如果你最终决定不再需要它们,你只要git branch-D old_master
,它们就消失得无影无踪了。与公认的答案相反,我建议(假设您谈论的是主分支
分支,您希望在保留跳过的部分的同时,将一些提交延迟):
这会给你一个非常清晰的历史,而你移除的垃圾仍然存在
master
|
v
A-B-C-D
\
E-F
^
|
old_master
任何进一步的承诺都将导致历史的分歧
master
|
v
A-B-C-D-G-H
\
E-F
^
|
old_master
所以E和F永远不会弄乱你的“真实”历史,但你总是能够找到它们。如果当你决定不再需要它们时,你只要git branch-D old_master
,它们就消失得无影无踪了。你为什么要在头上播放git commit的副本,这又有什么意义呢?我把以前的commits但我想让它们成为历史有没有E
和F
的特定元素需要保留?为什么不直接还原F
和E
并用它来完成呢?在当前头上还原不会引起冲突。你为什么要在头上播放Git提交的副本,还有什么这样做的意义是什么?我把我以前的承诺搞砸了,但我想让它们成为历史。你想保留E
和F
的特定元素吗?为什么不直接还原F
和E
并用它来完成呢?对当前头部的还原永远不会引起冲突。