我经常需要找到一些我在旧版本的脚本中编码的东西,但我不知道什么时候。我通常尝试在日志中跳来跳去寻找不同的版本,看看它们是否有变化,或者我只是给予并尝试其他东西。特别有用的是输出两个日期或散列之间的文件的每个版本的命令。然后一个简单的grep就能找到我要找的东西。它可能会像这样工作:
git showeverything d612905a..b39af32e /path/to/file /tmp/output
z4iuyo4d1#
Git有一个完美的工具:git log -S,它将搜索更改并仅显示那些提交
git log -S
# search changes in all branches which touch the string $abc in a file git log -p -S'$abc' --all -- path/to/file
ohfgkhjo2#
我知道这可能不是你想要的答案,但是每个git托管网站/服务都有一个很好的GUI,可以查看仓库中每个文件的提交历史。我经常用。
egdjgwm83#
你可以使用git log [commit_range/dates/other_constraints] -- <filename(s)>来显示与特定文件相关的所有更新日志,你可以在日期/提交/等等中添加约束。也是使用git show <same stuff>实际显示每个阶段的文件。..
git log [commit_range/dates/other_constraints] -- <filename(s)>
git show <same stuff>
gmol16394#
git log file显示所有影响 file 的提交的提交id。git show commitid:file将文件的相关版本的内容打印到stdout。请注意,在git show命令中,如果只指定文件名,则文件名是相对于git仓库的根目录的,除非指定路径,而不是相对于当前目录的。要显示当前目录中的文件,请执行以下操作:git show commitid:./file*
git log file
git show commitid:file
git show
git show commitid:./file*
4c8rllxm5#
根据其他答案,我得到了这个:
for hash in $(git log --pretty=format:%h style/elevation.mss); do echo -e "==========\n$hash\n" git show ${hash}:style/elevation.mss done | less
它需要一些参数化,但你得到的想法。
5条答案
按热度按时间z4iuyo4d1#
Git有一个完美的工具:
git log -S
,它将搜索更改并仅显示那些提交ohfgkhjo2#
我知道这可能不是你想要的答案,但是每个git托管网站/服务都有一个很好的GUI,可以查看仓库中每个文件的提交历史。我经常用。
egdjgwm83#
你可以使用
git log [commit_range/dates/other_constraints] -- <filename(s)>
来显示与特定文件相关的所有更新日志,你可以在日期/提交/等等中添加约束。也是使用
git show <same stuff>
实际显示每个阶段的文件。..gmol16394#
git log file
显示所有影响 file 的提交的提交id。git show commitid:file
将文件的相关版本的内容打印到stdout。请注意,在
git show
命令中,如果只指定文件名,则文件名是相对于git仓库的根目录的,除非指定路径,而不是相对于当前目录的。要显示当前目录中的文件,请执行以下操作:git show commitid:./file*
4c8rllxm5#
根据其他答案,我得到了这个:
它需要一些参数化,但你得到的想法。