在git repo中查找最后编辑的文件

时间:2016-06-20 14:29:12

标签: git macos directory

是否有办法(可能使用git)在git repo中获取最后编辑的文件?

示例:我从周五下午4:59离开去周末在湖上度过了一系列未提交的更改,并且不记得我离开的地方。

2 个答案:

答案 0 :(得分:1)

听起来您只想在项目中找到最新的文件,这不是Git直接跟踪的内容。就Git而言,你有一些阶段性的变化,以及一些非分阶段的变化,但它不知道新近。

谢天谢地,文件系统确实如此。实际上这只是which file is the newest的问题,但是我们可以使用Git的一些知识来改进这个答案(并且还可以使其跨平台 - Mac OS X版本find没有-printf选项。

如果您还没有暂存更改,那么它们必须比Git索引(存储暂存的文件信息)更新,因此我们可以找到所有更新的文件:

find . -type f -newer .git/index

我们可以使用stat命令查询文件时间:

find . -type f -newer .git/index -exec stat -f '%c %N' {} \;

最后我们想要对输出进行排序(以获得最新的输出)并将其限制为单个文件:

 find . -type f -newer .git/index -exec stat -f '%c %N' {} \; | sort -r | head -1

这里我更改了我的存储库中的一些文件:

% git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   unstaged_edit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    unstaged_add

no changes added to commit (use "git add" and/or "git commit -a")

如果我想找到最新的:

% find . -type f -newer .git/index -exec stat -f '%c %N' {} \; | sort -r | head -1
1466437626 ./staged_edit

答案 1 :(得分:0)

我不知道找到最后编辑过的文件的方法,但是如果您更改了文件并保存了文件,那么您应该可以通过git status查看中断的当前状态。

默认情况下,它会显示已更改但未添加的内容(工作目录)以及已添加但未提交的内容(暂存区域)。