git show
与存储库根路径下的路径(相对路径为./
或../
):$ git show REVISION:path/to/file
请将REVISION
替换为实际的版本号(可以是Git提交的SHA、标签名、分支名、相对提交名或Git中任何其他标识提交的方式)
例如,要查看4个提交之前的文件<repository-root>/src/main.c
的版本,请使用以下命令:
$ git show HEAD~4:src/main.c
在Windows下使用Git时,即使是相对于当前目录的路径,也需要使用正斜杠。要了解更多信息,请查看git-show
的手册页面。
按日期进行操作,如果提交是在过去的90天内,则看起来像这样:
git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt
注意,HEAD@{2013-02-25}
在这个代码库中表示“2013年2月25日时HEAD的状态”(使用reflog),而不是“在历史记录中2013年2月25日之前的该分支中的最后一次提交”。git show $(git rev-list -1 --before="2013-02-26" HEAD):./fileInCurrentDirectory.txt
master
而不是HEAD@{2013-02-25}
时,这个命令会很有用。 - funrollgit log --since='2016-04-28 23:59:59 +0100'
这样包含时间? - dumbledad:
和文件名之间__不能__有空格。 - Abhishek Divekar如果您喜欢图形用户界面(GUI),您可以使用gitk:
使用以下命令启动gitk:
gitk /path/to/file
在屏幕顶部选择修订版本,例如按描述或日期。默认情况下,屏幕的下半部分显示该修订版本的差异(对应“补丁”单选按钮)。
要查看所选修订版的文件:
gitk REVISION /path/to/file
。当你想要检查某个特定版本时,这会非常方便。 - Christian.Dsudo apt install gitk
安装Gitk。 - run_the_racegit show
命令指定一个提交哈希值
(通常也称为提交ID
)。
git show <commitHash>:/path/to/file
git log /path/to/file
显示给定文件的所有更改的日志commit 06c98...
(其中06c98...是提交哈希值)的提交哈希值
提交哈希值
提交哈希值
和步骤1中的path/to/file
运行git show <commitHash>:/path/to/file
命令。注意: 在指定相对路径时添加./
似乎很重要,即:git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html
。
git show <SHA1> --name-only
命令获取它。 - Tiinadebian
中,添加 ./
对路径没有影响。 - Timo除了Jim Hunziker的答案外,
您还可以从修订版中导出该文件,
git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt
希望这能帮到你 :)快速查看文件与旧版本的差异:
git show -1 filename.txt
> 与文件的上一版本进行比较
git show -2 filename.txt
> 与文件的倒数第二个版本进行比较
git show -3 fielname.txt
> 与文件的倒数第三个版本进行比较
:
- 双冒号 - 在提交哈希和文件之间,评论者提到整个文件和与另一个旧版本的差异。 - Timogit log -p
命令将展示每个提交的差异(除了合并提交),而不仅仅是提交记录。您可以按下 /
,输入文件名,然后按下 enter
。按下 n
或 p
前往下一个/上一个匹配项。这样,您不仅可以看到文件中的更改,还可以查看提交信息。
git log -pm
也会显示合并提交。 - sanborgit log -p -- filename.txt
以将历史记录限制为所需文件。 - Jean Paul方式1:(我更喜欢这个方式,不会丢失未提交的数据)
使用以下命令查找提交ID:git reflog
从提交中列出文件:git diff-tree --no-commit-id --name-only -r <commitHash>
例如:
git diff-tree --no-commit-id --name-only -r d2f9ba4
d2f9ba4
是第一步骤中的提交ID。
使用以下命令打开所需文件:
git show <commitHash>:/path/to/file
例如:
git show d2f9ba4:Src/Ext/MoreSwiftUI/ListCustom.swift
Src/...
是第二步骤中的文件路径。
方式2:(有可能丢失未提交的数据)
使用以下命令查找提交ID:git reflog
将本地代码库强制重置到此提交:git reset --hard %commit ID%
例如:
git reset --hard c14809fa
进行必要的更改并将其提交到所需的分支。
git_dump_all_versions_of_a_file.sh path/to/somefile.txt
在另一个类似的问题中,这里提供了脚本。
git_root
、git_log_short
和git_log_message_for_commit
都没有找到。 - mogsie从给定的版本中获取多个文件的帮助程序
在尝试解决合并冲突时,这个帮助程序非常有用:
#!/usr/bin/env python3
import argparse
import os
import subprocess
parser = argparse.ArgumentParser()
parser.add_argument('revision')
parser.add_argument('files', nargs='+')
args = parser.parse_args()
toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel']).rstrip().decode()
for path in args.files:
file_relative = os.path.relpath(os.path.abspath(path), toplevel)
base, ext = os.path.splitext(path)
new_path = base + '.old' + ext
with open(new_path, 'w') as f:
subprocess.call(['git', 'show', '{}:./{}'.format(args.revision, path)], stdout=f)
使用方法:
git-show-save other-branch file1.c path/to/file2.cpp
file1.old.c
path/to/file2.old.cpp
git checkout <需要查看的提交版本号>
命令,之后执行git checkout HEAD
命令即可。记住要保持原文意思并使翻译通俗易懂。 - Homero Esmeraldo