【问题标题】:time of last git-add上次 git-add 的时间
【发布时间】:2017-11-02 08:22:37
【问题描述】:

注意,请先阅读我的问题,然后将其标记为how-can-you-undo-the-last-git-add的重复。

有没有 git 原生方式来获取最后一个 git add . 的执行时间?

我最近在我的 ios 项目中进行了一些编码,并在不提交的情况下执行 git add .。 今天我也在项目中做了一些编码,遇到了一个bug。我用git diff查看了今天的工作,没有发现任何改动可能导致bug。

我上周六在我的设备上测试了 ios 应用程序。所以我想知道最后一个git add . 是什么时候执行的。如果是在上周六之前执行的,我可以在今天的代码中找到问题。

【问题讨论】:

  • 检查.git/index 的时间戳,如果您没有运行任何其他涉及该文件的命令。此外,history 如果您配置了类似 cyberciti.biz/faq/unix-linux-bash-history-display-date-time
  • 上面的评论是我能想到的唯一方法。但是,您应该进行小而频繁的提交,以便获得细粒度的历史记录来找出此类错误。
  • 使用 git reflog 命令查看命令历史记录,这将帮助您了解最后执行的命令。
  • @LethalProgrammer 我使用git reflog -all,它不会像git add那样显示命令

标签: git git-add


【解决方案1】:

不,没有。

我建议您尽快提交代码,稍后您可以使用 git-rebase 轻松将多个提交合并为单个提交

【讨论】:

  • 您的解决方案不会给出 OP 所做的错误代码的区别。请看看他到底想要什么。
【解决方案2】:

您需要先使用以下命令将 added / staged 声明文件(您已通过 git add . 完成)转换为 modified 状态:

git reset HEAD~1

然后使用:

git diff

以便您现在可以看到代码差异。

供参考:

当您启动一个空存储库并添加一个文件时,它将位于 untracked 状态,

当您使用git add 时,这些文件现在处于staged 状态并且 准备好在存储库中提交

要 UNDO git add,只需使用 git reset HEAD~1,所以 staged 状态 文件可以转换为untracked状态。

【讨论】:

    【解决方案3】:

    您可以查看.git/index 或查看 bash 历史记录。参考 ElpieKay 的评论。

    【讨论】:

      【解决方案4】:

      尽力而为:检查 blob 文件的创建日期。

      这绝对不是最简单的方法,但即使我们git add 不止一次也可能有效。

      当我们git add一个文件时,git 可能.git/objects创建一个blob文件:

      (它也可以在不创建新文件的情况下重用现有的 blob)

      # add a new file to index
      $ echo gimme-a-new-blob > a
      $ git add a
      
      # list blob objects in stash
      $ git ls-files --stage
      ...
      100644 facd29e7e5ab3a8764cd7702daefc4f2b6515edd 0       a
      ...
      
      # check the blob file, filenamed is based on sha1 of that blob
      $ ls -l .git/fa/cd*
      19 Jun  1 21:14 .git/objects/fa/cd29e7e5ab3a8764cd7702daefc4f2b6515edd
      

      如果我们检查索引中文件的所有 blob,最新的创建日期可能就是您想要的。

      【讨论】:

        猜你喜欢
        • 2018-07-09
        • 2016-02-14
        • 2010-10-09
        • 2014-11-20
        相关资源
        最近更新 更多