如何将文件更改回开头 - git

时间:2015-06-05 01:33:26

标签: git github

我已经提交了一段时间了,我意识到有一个文件我想在所有提交中更改回初始版本。在过去的所有提交中,用一个文件覆盖另一个文件的最简单方法是什么?

3 个答案:

答案 0 :(得分:0)

确认 - 您想要的是存储库中的所有文件保持不变,除了将在所有提交中更改的文件:

这是一个干净简单的方法: 创建一个文件,其内容完全符合您的要求。将它放在存储库之外的目录中。

运行以下命令: git filter-branch --tree-filter'cp'HEAD

请注意,这将更改所有提交的提交哈希值(因为文件内容更改)。在开始

之前,您可能希望使用git checkout -b <new branch>创建单独的分支

答案 1 :(得分:0)

如果要查看文件的原始版本,只需输入:

git checkout HEAD filename

如果你知道你想要的特定版本哈希,你也可以这样做:

git checkout 653e0c0 filename

答案 2 :(得分:0)

Artifactorygit-log的组合可以解决问题。试试这个:

$ git checkout `git log --pretty="format:%h" your_file | tail -1` -- your_file

现在剖析一下这意味着什么:

  1. git log --pretty="format:%h" your_file将返回your_file的所有日志历史记录。我们使用--pretty="format:%h"标志将输出限制为仅提交sha。如果单独运行此命令,您将看到它返回构成文件历史记录的提交列表。 (删除--pretty="format:%h"以查看完整日志)

  2. 然后我们必须使用愚蠢的管道| tail -1来获取上一个git-log命令列表中的最后一个提交。最后一次提交将对应于您的文件所属的第一次提交。我们必须进行管道处理,因为git log --reverse -1在重新排序结果(即-1标志)之前首先对提交进行过滤(即--reverse标志)。因此,git log --reverse -1的结果是返回与您的文件关联的最新提交,而不是最早的初始提交。

  3. 然后我们使用git checkout <first_ever_commit_sha> your_file命令将您的文件重新回到第一次提交。