在我的临时分支上,我提交了一个文件夹migrations_lar
,其中包含1个迁移文件。我在11月29日找到了我添加它的提交。当我现在查看暂存分支时,整个migrations_lar
文件夹都消失了。我需要找出它消失的时间。我也想知道是否有其他事情消失了。
这是我学到的:
我跑了git log -- database/migrations_lar
我添加文件夹的提交有“实施合作伙伴Webhook”消息。这些其他提交都不会删除该文件夹。
当我进入GitHub并在各种提交后检查暂存分支的状态时,我看到该文件夹出现并且经常消失:突出显示的行没有我的提交,并且没有migrations_lar文件夹。底部提交在很久以前最初创建时具有migrations_lar文件夹,而不包含我的文件。
关于这个如何或什么时候迷失了,以及它失去了什么,我感到非常难过。有帮助吗?
几个月前,我在其中添加了带有Laravel默认迁移的migrations_lar文件夹。在某些时候,有人删除了文件,因此文件夹。
11月29日,我添加了文件夹和新迁移。
在那之后的某个时刻(我假设)有人创建了与原始删除的错误合并。我不知道这是怎么发生的。关于如何找到显示该文件被删除时的提交的任何线索?!
谢谢@Ryan。我尝试使用git bisect来查找导致该问题的提交。而且我觉得它有所帮助。我认为它确定了提交,但我忽略了它。
然后我打电话给git checkout HEAD^; ls database/migrations_lar
,直到我找到了包含该文件夹的提交。我找到了错误提交的提交字符串并运行了git show https://github.com/completesolar/HelioTrack/commit/226d0b8f940a7bec524360a0f631d87f46dfaab8
。
果然我看到了
...017_11_28_100558_create_organizations_table.php | 54 ---
然后我意识到这个提交是我合并一个Pull Request。我检查了Pull请求,当然我已经错过了完整的代码审查。从那个pull请求中我恢复了Pull Request上的30次提交,发现了违规的合并失败。
除了二等分之外,另一种方法是git log
,专注于删除。
见“Find when a file was deleted in Git”
git log --diff-filter=D --summary | \
sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
在Mac上:
git log --diff-filter=D --summary | \
sed -n -e '/^commit/h' -e '\:/:{' -e G -e 's/\ncommit \(.*\)/ \1/gp' -e }
这将列出文件夹中的文件已消失的所有提交。