如何显示几次提交前删除的git文件
几天前我删除了一个文件,现在我需要它的一部分。如何显示几次提交前删除的git文件,git,Git,几天前我删除了一个文件,现在我需要它的一部分。 如何显示它以便我可以复制粘贴 我试过这个: git show HEAD~2 -- path/to/file 但我没有得到任何输出。 自动完成不适用于已删除的文件,因此我不能100%确定文件名,但我可以99%确定。您可以在删除文件的位置签出提交(git checkout“old commit hash”),复制所需文件,然后再次签出当前数据(git commit“current commit hash”) 可以通过以下方式查找哈希:git log列
如何显示它以便我可以复制粘贴 我试过这个:
git show HEAD~2 -- path/to/file
但我没有得到任何输出。
自动完成不适用于已删除的文件,因此我不能100%确定文件名,但我可以99%确定。您可以在删除文件的位置签出提交(
git checkout“old commit hash”
),复制所需文件,然后再次签出当前数据(git commit“current commit hash”
)
可以通过以下方式查找哈希:
git log
列出两次提交之间所有更改的文件
git diff --name-only START_COMMIT..END_COMMIT
使用--name status还将显示与文件一起添加、删除、修改的更改
git diff --name-status START_COMMIT..END_COMMIT
使用gitk。 一种简单的方法是,如果您碰巧使用了gitkgui,只需在终端中简单地运行
gitk
,然后浏览git树列表,在那里可以删除文件
使用CLI方式:
git log --your_file_path
或
如果您只想从树中查看已删除的文件,.您可以使用命令
git whatchanged
查找已删除文件的名称。它显示由以前的提交修改的文件列表。已删除的文件用字母D标记。识别文件名后,要恢复文件名,请键入git checkout~-
,其中
表示提交的散列,其中您使用指定的
删除了文件
如果只想查看文件,请键入
git show--
。此命令打印指定提交对文件所做的更改(包括删除)。这将显示特定文件的最后更改:
git log -1 -p -- <file_path>
^
)在提交之前签出文件:
git签出^
- 我想你的问题是:
- 你删除了一个文件
- 然后承诺
- 发生了很多事情
- 现在需要该文件的信息 如果是这样,你所做的是正确的。但要实现这一目标还需要更多的东西
git log--pretty=format:“%h-%an,%ad-->%s”--date=iso
这将以可读的格式提供带有日期的提交。 假设有100次提交,并且您的提交日期是距离HEAD 30日左右(然后进行一些“最后40次”提交)
如果输出为40次提交,请执行以下操作git log--pretty=format:“%h-%an,%ad-->%s”--date=iso | head-40 | awk'{print$1}'
- 读取提交时
显示的是diff而不是完整的文件。还原文件需要tilde。提交散列后的tilde指的是该文件仍在其中的上一次提交。但是,如果您的目标只是查看文件,当然,;do echo-e“\n\n在$commit中提交的文件是:”;git show--pretty=“format:”--name only$commit;完成<
然后我需要先隐藏我所做的更改吗?您可以完成完整的命令列表吗?您可以使用git cat file-p HEAD~2:path/to/file
将它们隐藏起来,或者已经提交(而不是推送)。提交更改后,可以使用git stash
修改提交中的新更改。完整的更改将是:1)git commit--amend
2)git添加“更改的文件”
3)git commit
->找出删除文件的提交和当前文件4)git log
5)复制您需要的FIE 6)git签出“旧提交散列”
7)使用git checkout“当前提交散列“
,git add files
进行更改并将其修改为当前提交,谢谢,我不知道git commit--amend
。git whatchanged
在~
中是打字错误吗?我可以不签出就显示文件吗?不确定为什么git show hashid--path/to/filegit checkout~-
命令就足够了。我补充了答案,谢谢。你用的是Linux还是Windows?如果是windows,您如何访问git(通过UI或命令)?如果命令-参见下面的我的答案,请选择正确答案。这将对其他人有所帮助。show
git log -1 -p -- <file_path>
git rev-list -n 1 HEAD -- <file_path>
git checkout <SHA>^ -- <file_path>