除非我簽上演變化的地方,並重新編譯和重新測試(不太富有成效的做法在我看來)
這是非常有成效的。它被稱爲"continuous integration testing"或CI。這被認爲是最佳做法。 CI服務器可以免費找到這些日子,包括TravisCI,GitLab CI和AppVeyor用於Windows測試。
CI確保代碼的乾淨副本在乾淨的環境中進行測試。這會產生你提到的那些問題,忘記提交一些東西,以及其他許多問題。它還避免了基於特定開發機器的任何假設,如您忘記聲明的任何依賴關係。
CI可以運行用戶可能遇到的操作系統,編譯器和依賴關係的各種組合。它還使得捐助和接受捐款變得更加容易,因爲CI服務器確保這些捐款經過測試。
而且,也許最重要的是,它確保測試運行。人們有時會忘記,或者變得懶惰。
我在一個項目上工作,並在許多文件中的更改。有些我打算提交,有些可能只是在調試過程中臨時使用(例如跟蹤語句)。
你想要它,以便當你運行git status
什麼它說要上演。那麼就沒有必要仔細檢查git status
來找出什麼是和不要上演。這大大減少了丟失東西的機會(或者意外提交了某些東西)。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
首先是要明智地使用.gitignore
忽略不屬於被提交的任何文件。這包括構建工件和本地配置文件。
其次是避免習慣性地從承諾提交手寫的調試語句。它真的是很容易意外提交它們,其他開發人員不會從中受益。相反,使用調試標誌並將它們放入。根據需要翻轉調試標誌。
這使我想到,也許我應該編譯和測試只上演的內容,它會更容易些,如果這樣做等於工作副本本身。但未跟蹤文件的問題仍然存在。
這是一個好主意。你可以通過stashing your changes來完成。存儲是存儲正在進行的工作的一個小小的地方,有點像保存補丁文件。基本的工作流程是...
# Save all changes except what is staged
$ git stash save -ku
...do your testing on the staged change...
# If it worked, commit the change.
$ git commit
# Restore your unstaged changes and untracked files.
$ git stash pop
-k
說保持任何已經上演。 -u
表示存儲未跟蹤的文件。
一般來說,任何需要所有人都小心的過程將會失敗。持續集成意味着您不能忘記運行測試,或在特定環境中運行測試。保持你的工作目錄清潔意味着人們不必仔細檢查要登臺或不登臺,他們可以習慣性地把所有東西都展示出來。人們可以撥打git add .
和git commit -a
,併合理確定它是正確的。
您可以使用'git stash'刪除所有臨時工作(使用'git stash apply'進行恢復)。留下未跟蹤文件的問題,但是... – knittl
@knittl查看'git stash save -u'。 – Schwern