【问题标题】:Is there a way to concretely know what files have been staged in the index matching the current commit?有没有办法具体知道在与当前提交匹配的索引中暂存了哪些文件?
【发布时间】:2017-08-06 21:36:24
【问题描述】:

无论我们使用 checkout 还是 reset,当我们从 commit 跳转到 commit 时,索引会一直匹配 now-current commit。

当我问人们如何查看当前提交的索引中暂存了哪些文件时,他们告诉我:git ls-files -s

git ls-files -s 似乎不是我想要的。
此命令仅列出子树的跟踪文件,当前目录是它的根目录。如果我移动到另一个目录,git ls-files -s 的输出会发生变化!

真的,在我从其他提交跳转到某个提交后,是否有一个命令可以可靠地为我提供提交的跟踪文件?

【问题讨论】:

  • “在我从其他一些提交跳到它之后”的重要性是什么?我的意思是,特定提交的跟踪文件列表不会改变,无论你是从一个提交跳转到它,还是你只是克隆了一个存储库,或者任何原因让你检查某个提交。

标签: git indexing commit git-ls-files


【解决方案1】:

如果你想这样做很多,你可以把这样的东西放在 shell 函数或脚本中。

git ls-files --full-name -s "$(git rev-parse --show-cdup)"

【讨论】:

  • 根据您的描述,列出暂存在索引中的文件,ls-files 是正确的命令,但它在设计上是上下文敏感的,如 diff。如果你想要输出不依赖于特定子目录的行为,那么你需要围绕它编写脚本。
  • 或者,使用git -C $(git rev-parse --show-toplevel) ls-files -s:同样的基本思想,我们在顶层运行命令(而不是“好像在顶层”)。
猜你喜欢
  • 1970-01-01
  • 2022-01-06
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 2013-09-10
  • 1970-01-01
相关资源
最近更新 更多