Git列表的分阶段文件

Tim*_*oot 92 git git-diff git-status git-stage

我上传了很多文件git add,现在我希望看到我上传的所有文件,无论有git diff --cached没有git status --cached.

我怎么做?使用时,--cached我可以看到我刚刚上演的变化..所以然后我尝试使用,git statusgit add不幸的是,这不起作用git diff --cached.

Tim*_*oot 161

执行此操作的最佳方法是运行该命令changes between the index and your last commit.

查看手册后,您可能会发现以下内容:

git diff --name-only --cached
Run Code Online (Sandbox Code Playgroud)

在手册的示例部分:

--name-only
    Show only names of changed files.
Run Code Online (Sandbox Code Playgroud)

结合在一起,你得到Show only names of changed files.--staged

  • 这非常有用,因为它允许您获取一个文件名列表,然后您可以(在我的情况下)在预提交挂钩中管道到一个linter. (11认同)
  • 如果您使用git add -N [files]添加文件,即使它们实际上尚未暂存以提交,这也将包括这些文件。因此,这并不是我们想要的预提交钩子的全部。 (4认同)
  • 大多数时候,您会从列表中删除已删除的文件,因为您将此文件列表传递给期望所有文件都存在的命令。要从列表中删除已删除的文件,您可以执行以下操作:`git --no-pager diff --name-only --cached --diff-filter=AM`。 (3认同)
  • 重新“***最后一次提交***”;误导。更好的说法是“git diff --cached”是“git diff --cached head”的缩写 (2认同)
  • 我建议使用 `--diff-filter=d` 来仅忽略已删除的文件,因为您也应该考虑其中的重命名和内容。 (2认同)