在 git 预提交挂钩中获取未暂存文件的列表

Get the list of unstaged files in git pre-commit hook


我花了很多时间 Whosebug/google 试图找出解决这个问题的方法。可能解决方案很简单,我遗漏了一些东西。

所以我有一个预提交挂钩(shell 脚本),它对提交的文件运行很少的测试。如果提交的文件未通过测试,它将从阶段中删除。我想从脚本中打印出所有未说明的文件。到目前为止,这是我在脚本中尝试过的内容。

  1. git diff --name-only --diff-filter=M
  2. git ls-files -m
  3. git diff --name-only

它们都抛出相同的错误,如下所示:

fatal: This operation must be run in a work tree

P.S。我是 运行 this inside .git 文件夹(因为挂钩驻留在那里),因此出现错误。

任何建议都会很有帮助。

我问了我的一个同事,他想出了一个专门针对 shell 脚本的解决方案。有时你只需要简单地思考!

Just change the directory using "cd" and run the command once you are outside the .git folder.

假设您的钩子 .git/hooks/

在脚本顶部添加以下内容
#! /bin/bash
here=`dirname "[=10=]"`
cd "$here/../.."