我经常犯错,创建提交时忘记暂存新文件。如何配置git,在有未暂存的文件时警告和/或阻止我进行提交?
注意,我说的是新文件。不是现有文件的未暂存更改。我知道可以使用-a
自动包含这些更改。
我经常犯错,创建提交时忘记暂存新文件。如何配置git,在有未暂存的文件时警告和/或阻止我进行提交?
注意,我说的是新文件。不是现有文件的未暂存更改。我知道可以使用-a
自动包含这些更改。
除非您选择编写预提交挂钩,否则这不是一件可能的事情。
然而,这也不是一个好主意。根据您所工作的项目,由于它们的性质(自动生成、大型二进制 Blob、系统配置、系统密钥等),有些文件是您不想提交的。此外,如果您在使用 Git 进行更高级的工作,比如拆分提交块,那么警告最多只会变成噪音。
这更多是一个纪律问题,我是以最好的方式说这句话的。人们必须习惯执行检查某些东西(准确地说,正确的东西)是否已暂存才能提交的步骤。这意味着您必须经常键入以下命令:
git status
git add . # or whatever variant of add you need to work with
git status
git commit
git push (ideally when ready)
可能不完全符合您的要求,但对我来说它很有用。我的bash提示根据我所在的仓库状态显示不同的状态。这还检查未跟踪的文件。
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\]'
/tmp/myrepo (master) $ touch newfile.txt
/tmp/myrepo (master %) $ git add newfile.txt
/tmp/myrepo (master +) $ git commit -m 'added newfile'
[master 9fe6399] added newfile
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 newfile.txt
/tmp/myrepo (master) $
git ls-files -o --exclude-standard --exclude-from=[file]
返回空,则正常。否则,将输出附加到 [file]
并作为警告输出之前命令的结果,或以非零状态码退出。
git status
命令会显示所有未暂存文件的列表。 - mkrieger1commit --amend
命令进行修正。 - mkrieger1