我們都經歷過這樣痛苦的時刻,當一項新功能在本地正常工作,但由於忘記添加新文件而部署時會中斷。如何強制git警告或添加新文件?
當執行git commit -a
時,有沒有辦法讓git發出警告或自動添加新文件?
我們都經歷過這樣痛苦的時刻,當一項新功能在本地正常工作,但由於忘記添加新文件而部署時會中斷。如何強制git警告或添加新文件?
當執行git commit -a
時,有沒有辦法讓git發出警告或自動添加新文件?
一個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:不幸的是我沒有成功地使用循環內讀取,所以我認爲它可能無法讓這個鉤子問你的行爲。
git config --global alias.commita '!git add . && git commit -a'
之後,只需使用:的git commit -a
git commita ..
instad。這也會添加新文件。
在提交之前始終運行'git status',你是否總是盲目地提交而不檢查索引中的內容(被提交的東西)?另外,這就是'git commit -a'的作用...提交工作樹中的每個不被忽略的文件。 – KurzedMetal
@KurzedMetal,'git commit -a'不考慮未跟蹤的文件 - 引用手冊中描述'--all'選項的部分:「告訴命令自動分段已經被修改和刪除的文件,但是新的你沒有告訴git的文件不會受到影響。「 – kostix
是的,我的錯誤仍然存在,建議在'git commit'之前執行'git status'。如果你盲目'git add .'或類似的東西,你可能會在項目歷史中添加不被忽略的垃圾。如果推到遙控器上,這不易修復。 – KurzedMetal