如何取消删除git中的文件并保留原始的责备历史记录?

时间:2017-07-08 19:38:32

标签: git

我不小心删除了一个文件(我不是他的创建者)并提交并将其推送到遥控器。现在我想让git取消删除这个更改,但是当我使用git revert #mistaken commit时它会起作用但是责备信息指向我作为此文件的创建者而不是他的原始创建者。任何人都知道如何在git中取消删除此文件并保留其原始的责备历史记录? 在此先感谢您的帮助。 亚当

2 个答案:

答案 0 :(得分:2)

执行所需操作的唯一方法是使用Find and restore a deleted file in a Git repository之类的内容重写修订历史记录。但是,这有一个令人讨厌的副作用,因为自文件被删除后所有提交的人现在都需要重新设置代码。可以想象,这将为团队中的每个人带来很多工作。

为了每个人的理智,最好只是恢复单一的提交并离开"责备"作为你自己的。一些历史考古学将向任何有兴趣发生的事情表明。

答案 1 :(得分:0)

当然......你还原但文件是" new" (它在以前的版本中并不存在......所以谁应该为新线路负责?当然是你的)。如果你想保留文件(有责任和一切),为什么不修改你删除它的修订版?说你有这样的事情:

REV1 - REV2 - REV3 - REV4 - REV5 - REV6 - REV7 - REV8

说它是在你删除它的REV3上,在REV6上你还原了REV3。试试这个:

git checkout REV3
git checkout HEAD~1 -- <path-to-file> # get file back from its ashes
git commit --amend --no-edit # created a new REV3 revision that has the file
git cherry-pick REV3..REV5
git cherry-pick REV6..REV8

当您修改REV3时,您将从原始REV3获得不同的修订ID。当您选择以下命令时,请确保使用原始REV3 ID,而不是新ID。 REV6不会被应用(因为你不再需要它)。现在你完成了你有一个备用分支,文件永远不会消失,现在责备应该显示行的原始修订。如果你喜欢它,请随意推新分支。

相关问题