github是否记得提交ID?

几天以来,我为Scrollback项目重写了install.sh文件,由于我是唯一在本地进行此工作的人,因此我一直在提交与修改相同的提交,不断地将其推送到fork的主服务器。(请忽略此处的最佳做法,我一个人工作)。


在这两次之间,我记得通过电子邮件向显示我已完成一半工作的人发送了电子邮件,网址为https://github.com/sindhus/scrollback/blob/8d8f7f414383499c2ab6fec586b4c9665a41c7aa/install.sh


现在,由于某种困惑,我在本地的工作上迷失了方向(想想rm -rf),我记得在此之前我曾提出过建议。所以github在某个时候确实看到了我的install.sh重新提交的提交ID。


如您所见,上面的URL使我可以通过提交ID访问该Blob。但是我无法在本地访问它,因为该回购被强行推送。


我的问题是如何获取github向我显示文件EVER的所有提交ID?它可能知道该文件的所有ID,而与路径无关。如果我必须使用他们的API,我不在乎,但我希望一些想法可以对此进行深入研究。


谢谢!


炎炎设计
浏览 644回答 3
3回答

喵喵时光机

我不确定是否有一种方法可以跨修订的提交获取文件的所有版本。但是,reflog将包含有关较早版本的信息,您可以手动提取它们。下面是一个示例。这是我的第一次承诺echo "a" > a.txt && git add a.txt && git commit -m "Version 0"之后,再进行一些修改。% echo "aa" > a.txt && git add a.txt && git commit --amend -m "Version 1"% echo "aaa" > a.txt && git add a.txt && git commit --amend -m "Version 2"% echo "aaaa" > a.txt && git add a.txt && git commit --amend -m "Version 3"% echo "aaaaa" > a.txt && git add a.txt && git commit --amend -m "Version 4"虽然我的日志只有一个条目%git log --oneline a8d6c39版本4我的reflog拥有一切% git reflog mastera8d6c39 master@{0}: commit (amend): Version 4cf87b8f master@{1}: commit (amend): Version 3c45a91e master@{2}: commit (amend): Version 263c7f5a master@{3}: commit (amend): Version 1f2b3336 master@{4}: commit (initial): Version 0因此,如果您想查看版本4,版本3等文件的外观,可以执行此操作% git show a8d6c39:a.txtaaaaa% git show cf87b8f:a.txtaaaa% git show c45a91e:a.txtaaa% git show 63c7f5a:a.txtaa% git show f2b3336:a.txta通常,即使您是唯一的开发人员,连续修改的“过程”也是不好的。您应该做的是一次性的事情,以纠正上一次提交的错误。

神不在的星期二

我没有真正得到这个问题,所以有一些解决方案:要查看特定文件的所有提交,请执行以下操作: git log --follow filename。要签出旧版本,请在此处找到答案
打开App,查看更多内容
随时随地看视频慕课网APP