2012-07-28 95 views
7

仍然有一個很難得到我的頭纏着分期的概念,因爲它適用於Git的。部署Git概念

可以在任何類比可以用SVN做? 在Git中創建階段級別的主要目的是什麼?

+1

迂腐:它不是「GIT」,它是「Git」。它不是任何事物的首字母縮略詞,萊納斯將它命名爲自己。 – millimoose 2012-07-28 17:36:10

+1

好的,謝謝我的Git;) – 2012-07-28 19:53:05

回答

7

相似之處:

文件,應該是庫的一部分,必須被添加到被跟蹤。兩種工具都使用add命令來完成此操作。添加文件意味着準備提交。

差異:

的Git允許一些進一步的各種細節的添加文件時。您可以決定添加一個完整的文件或不同的代碼行。 將文件添加到指數階段允許更多的靈活性。 SVN會自動提交已添加到存儲庫的文件的所有更改。 Git將決定與用戶的每個提交操作關聯的更改。換句話說:Git中的下一個提交只包含已經執行的更改(行或文件),無論文件的跟蹤狀態如何。 SVN自動包含對所跟蹤文件的所有更改。

其他信息:

嘗試讀一些職位描述Git的工作流,如從Oliver Steele之一。但請注意,有沒有一個的方式來使用Git - 有很多。如果你願意,你可以像使用SVN一樣使用Git。
不要指望在短時間內理解Git的哲學。我花了一年時間才弄懂它,但我仍然在學習使用它的新方法。如果你用SVN思維方式成長起來,我覺得更難。那裏有很多材料:文章,視頻...... - 慢慢來,嘗試其中的一些。這是我收集的清單中的一個選擇。

+0

謝謝。我認爲'pull'命令與SVN'update'命令非常相似。沒有? – 2012-07-28 21:07:38

+0

我是否正確地認爲在使用Git時會阻止發生'衝突',因爲在與另一個開發人員合作時,您必須在推送之前先進行拉取操作? – 2012-07-28 22:00:14

+0

而且更新有點類似於Git pull? – 2012-07-28 22:10:32

6

臨時區域的主要優點是,你可以很容易犯的一個給定文件的更改只是一部分。 (例如,使用git add -p)。據我所知,在SVN中執行「部分」提交的唯一方法是在每個文件級別上,或手動備份文件,然後臨時恢復所做的更改想要提交。

這如果(像我)你不是一個高度組織化的開發人員,希望能夠理清變成「整齊」事後承諾是巨大的。這遵循Git的一般態度,寧願讓你靈活執行嚴格規定。如果你不需要它,你總是可以不使用它,並使用git commit -a ...

沒有用SVN進行,因爲SVN不Git和不具備這樣的概念類比。

4

這裏有一些顯示分期有用的情景:

  • 你在一個特定的作品上工作,並在整個項目中做了不少變化。在測試完整的東西之前,你不想提交它們。但是這些變化往往可以獨立得足以做出多個邏輯提交而不是單個提交。這是您選擇零件並進行多次提交時的情況。

  • 分段在調試時特別有用。你可以在日誌報告中查看錯誤的來源。然後,您進行修復,然後使用這些日誌語句再次測試。但是,您希望在修改代碼之前提交修復程序以刪除這些日誌語句。

  • 另一種被證明有幫助的場景是,當你處於某種事情的中間時,發現一些不相干的東西,比如打字錯誤,想要修復並快速解決問題。

還有其他幾種這樣的情況,一旦你弄不清楚這個概念,你可能無法處理任何缺乏這個概念的東西:)。

PS:我還沒有使用過SVN,所以無法進行兩者之間的比較。

+1

你在這裏說的沒有一個需要一個臨時區域。例如,您可以使用'git commit <特定文件>'對多個提交進行多次更改。當然,這是通過暫存區域,但只是簡單地直接進入提交。 – Kaz 2014-11-13 20:32:25

+0

我只是想強調通過一些場景進行分段的概念。您可以通過多種方式實現單一目標。這既不是分段有用的場景的完整列表,也不是實現這些結果的唯一方法。只是從我的經驗中瞭解樣本的優點。 – Sailesh 2014-11-14 07:01:28