2012-10-15 109 views
0

我使用git保持某種版本控制和我在多臺機器的工作,因爲我傾向於在多臺機器工作同步。我是唯一處理我的代碼的人。版本控制和Git策略?

我可以做最基礎的使用Git例如git checkout一個文件以將單個文件返回到之前的狀態,並使用git revert(我不敢完全理解它的一些錯綜複雜的情況下使用git revert)來將整個項目返回到以前的狀態。我也有時使用git分支來將代碼向不同的方向分叉,特別是如果我不確定方向。

我的git的知識不過是有些脆弱,我仍然傾向於保持重新保存源文件逐漸我就可以了進一步的工作。例如在我完成這個工作的時候,我可能會在project18.c上工作,在我編寫代碼時經歷了1 ... 18。除了在處理文件時進行頻繁的git提交之外,我還有兩種方法可以「回撥」項目中的工作。然而,這種增量文件編號並不適用於遍佈多個文件的代碼,因爲跟蹤跨多個文件實現的功能太瘋狂了。我懷疑,通過更加努力地創建自包含的封裝函數,並將內部實現從周圍函數中隱藏起來,對於我的一些問題來說,這是一個更優雅的解決方案。

人們通常會建議爲每個主要新功能或代碼段執行git commit,但是當我無法執行頻繁的git提交時,我經常會花費過多的時間手動「退出」一個錯誤的塊代碼,如果我放棄實現代碼的特定方式。我懷疑提前規劃好的計劃//設計代碼有時可能會有所幫助,但通常很難完全預測最終會成爲死衚衕或錯誤的代碼片段。

我找了版本控制一個實際的策略,即有助於特別是當事情進展不順利,以及與調試問題的部分幫助。

回答

4

如果你是認真對待你的工作習慣(比如,如果你想編寫代碼爲生活或造成一些免費的軟件項目),這是最好的習慣commiting頻繁。提交應該仍然有一些邏輯,對於你編寫的每十行代碼都有一個單獨的提交是錯誤的。小&邏輯提交很好審查或bisect,如果你遇到迴歸。

如果你需要有很多檢查站,你可以有一個提交測試套件爲您正在使用的功能,以及一個提交測試套件的每一個路過的一部分。或者類似的東西,取決於你的工作風格。 (如果需要,在發佈變更時,使用Git可以隨時清理歷史記錄。)如果發現這還不夠,則會出錯。

2

的解決問題的方法有兩種不同的部分組成:

瞭解承諾

您需要更好地瞭解承諾背後的理念和它最初以爲的方式。理想情況下,提交必須與一段執行某些操作的代碼(如函數或某個部分的重構)處於同一級別。所以你需要經常提交,如果你沒有這樣做,你會簡單地丟失關於你的進度的信息,如果你做了這些提交,這些信息會被記錄下來。 我建議閱讀http://git-scm.com/book以更好地理解git的工作原理。

探索分支

如果在同一個項目的不同特點無關的工作,它可能是討厭做什麼都沒有做與對方連續的提交。分支是一個強大的功能,可以讓您在同一時間獨立處理不同的想法(按代碼)。 您可以在上一個鏈接中找到關於如何分支的信息。而且,這裏有一篇關於使用git分支的模型的文章,對於具有多種功能的大型軟件特別有用http://nvie.com/posts/a-successful-git-branching-model/