2012-06-07 52 views
2

我們都經歷過這樣痛苦的時刻,當一項新功能在本地正常工作,但由於忘記添加新文件而部署時會中斷。如何強制git警告或添加新文件?

當執行git commit -a時,有沒有辦法讓git發出警告或自動添加新文件?

+0

在提交之前始終運行'git status',你是否總是盲目地提交而不檢查索引中的內容(被提交的東西)?另外,這就是'git commit -a'的作用...提交工作樹中的每個不被忽略的文件。 – KurzedMetal

+1

@KurzedMetal,'git commit -a'不考慮未跟蹤的文件 - 引用手冊中描述'--all'選項的部分:「告訴命令自動分段已經被修改和刪除的文件,但是新的你沒有告訴git的文件不會受到影響。「 – kostix

+0

是的,我的錯誤仍然存​​在,建議在'git commit'之前執行'git status'。如果你盲目'git add .'或類似的東西,你可能會在項目歷史中添加不被忽略的垃圾。如果推到遙控器上,這不易修復。 – KurzedMetal

回答

2

一個pre-commit鉤子像這樣大約剩餘的文件應該報警:

#!/bin/bash 
. git-sh-setup # for 'die' cmd 
git status --porcelain | while IFS= read -r line; 
do 
     if [[ $line == \?\?* ]] ; then # if the file begins with ?? it's untracked by git 
       die "Uncommited files left!" # this will always terminate commit 
       # say "Uncommited files left!" # this will just print the warning 
     fi 
done 

只是add this to your repo's pre-commit hooks和薄紗:)

編輯:你也應該考慮使用一些持續集成工具包像哈德森,Buildbot - 它可以執行很多更全面的檢查,然後查找丟失的文件:)

編輯2:不幸的是我沒有成功地使用循環內讀取,所以我認爲它可能無法讓這個鉤子問你的行爲。

1
git config --global alias.commita '!git add . && git commit -a' 

之後,只需使用:的git commit -a

git commita .. 

instad。這也會添加新文件。