是否有办法(可能使用git)在git repo中获取最后编辑的文件?
示例:我从周五下午4:59离开去周末在湖上度过了一系列未提交的更改,并且不记得我离开的地方。
答案 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
查看中断的当前状态。
默认情况下,它会显示已更改但未添加的内容(工作目录)以及已添加但未提交的内容(暂存区域)。