为了账号安全,请及时绑定邮箱和手机立即绑定

github是否记得提交ID?

github是否记得提交ID?

Git
炎炎设计 2019-12-04 11:12:49
几天以来,我为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,我不在乎,但我希望一些想法可以对此进行深入研究。谢谢!
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

我不确定是否有一种方法可以跨修订的提交获取文件的所有版本。但是,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 master

a8d6c39 master@{0}: commit (amend): Version 4

cf87b8f master@{1}: commit (amend): Version 3

c45a91e master@{2}: commit (amend): Version 2

63c7f5a master@{3}: commit (amend): Version 1

f2b3336 master@{4}: commit (initial): Version 0

因此,如果您想查看版本4,版本3等文件的外观,可以执行此操作


% git show a8d6c39:a.txt

aaaaa

% git show cf87b8f:a.txt

aaaa

% git show c45a91e:a.txt

aaa

% git show 63c7f5a:a.txt

aa

% git show f2b3336:a.txt

a

通常,即使您是唯一的开发人员,连续修改的“过程”也是不好的。您应该做的是一次性的事情,以纠正上一次提交的错误。


查看完整回答
反对 回复 2019-12-04
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我没有真正得到这个问题,所以有一些解决方案:


要查看特定文件的所有提交,请执行以下操作: git log --follow filename。


要签出旧版本,请在此处找到答案


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 638 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信