Git警告新的非暂存文件

时间:2015-05-04 22:27:58

标签: git

我经常犯错误,忘记在创建提交时暂存新文件。如果存在未分段的文件,如何配置git来警告和/或阻止我提交?

注意,我说的是新文件。未对现有文件进行非分段更改。我知道我可以自动包含那些-a

的人

3 个答案:

答案 0 :(得分:4)

除非你选择为它写一个预提交钩子,否则这不是一个可能的事情。

然而,这也不是一个好主意。根据您正在处理的项目,由于其性质(自动生成,大型二进制blob,系统配置,系统密钥等),您要提交的文件。另外,如果您正在使用Git进行更高级的工作,例如splitting hunks of commits out,警告最多也会成为噪音。

这或多或少是一个学科问题,我的意思是尽可能最好的方式。人们必须习惯于执行步骤来检查在提交之前是否有某些事情(而不是正确的事情)。这意味着你必须养成经常输入这些命令的习惯:

git status
git add . # or whatever variant of add you need to work with
git status
git commit
git push (ideally when ready)

答案 1 :(得分:3)

可能不是你想要的,但对我来说它可以解决问题。我的bash提示根据回购的状态显示不同的状态。这也会检查未跟踪的文件。

UITextView

这将在处理命令行时为您提供一些有用的信息。注意'%'当您添加新的未跟踪文件时。

export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWSTASHSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\w\[\033[01;32m\]$(__git_ps1) \[\033[01;36m\]$ \[\033[00m\]'

答案 2 :(得分:0)

您可以使用预提交钩子来警告您或阻止您使用新创建但未暂存的文件进行提交。

从本质上讲,该钩子必须将以前看到的未暂存文件保存到一个文件中,以便在以后的提交期间引用它们。

在钩子中,如果git ls-files -o --exclude-standard --exclude-from=[file]不返回任何内容,则说明您是黄金。否则,将输出附加到[file]上,或者将前一个命令的结果作为警告输出,或者以非零状态码退出。

如果您选择中止而不是继续提交,并且想让文件处于未暂存状态,则只需尝试再次提交:该钩子将在之前看到它并忽略它。

我已经编写了一个更高级的交互式版本git-stagelight,您可以使用它。