2010-03-31 156 views
0

我想知道什麼時候應該使用svn中的提交,更新和合並命令。在svn提交/更新/合併命令

我檢出項目並更改了代碼後,我應該使用更新,提交還是合併來保持同步?

糾正我,如果我錯了:

更新=在回購所有的變化被複制到您的本地項目。

commit =您的本地項目中的所有更改都被複制到回購站。

合併=與上面相同,但您確定方向?

我什麼時候使用上面的每個命令?

+0

設置顛覆是我們的工作。使用它屬於www.stackoverflow.com(不必擔心,我們會將您的問題轉移給您) – 2010-03-31 22:49:36

+0

服務器故障適用於系統管理員和IT專業人員,以專業人員身份管理或維護計算機的人員。你的問題更多與軟件開發有關。請參閱http://stackoverflow.com/questions/tagged?tagnames=version-control&sort=votes – Zoredache 2010-03-31 22:49:52

+2

除了錯誤的地方,這個問題不應該被要求。如果你甚至不打算閱讀關於這個主題的許多快速入門指南中的至少一個,你怎麼能認真地期望能夠使用版本控制軟件(或其他任何東西)? – 2010-04-01 00:04:27

回答

3

我從SVN Book引用:

典型的工作週期是這樣的:

更新你的工作副本。這涉及到使用svn update 命令。

進行更改。您將對現有文件的內容編輯 最常見的更改。但有時你需要添加, 刪除,複製和移動文件和目錄,在SVN加SVN刪除SVN複製,並SVN移動命令處理工作中的各種結構 變化複製。

審查你的修改svn狀態svn diff命令是至關重要的 審查您在您的工作副本中所做的更改。

修復你的錯誤。沒有人是完美的,所以當你審查你的修改時,你可能會發現一些不太正確的東西。有時候,修復錯誤最簡單的方法是從頭開始重新開始。 svn 還原命令將文件或目錄恢復到其未修改狀態。

解決衝突(合併其他人的更改)。您需要花費 來製作和查看您的更改,其他人可能已經發布並且發佈了更改 。您需要將他們的更改整合到 您的工作副本中,以避免當您嘗試發佈自己的副本時潛在的過期情況 。同樣,svn update命令是 這樣做的方法。如果這會導致本地衝突,則需要 解決那些使用svn resolve命令。

發佈(提交)您的更改svn commit命令會將您的 更改發送到存儲庫,如果它們被接受,它們將創建您修改的所有內容的最新版本。現在其他人也可以看到你的工作 !

+2

這不解釋何時使用合併。 – masterxilo 2014-05-23 08:45:40

2

讓我們來看看如何「更新」和「合併」是不同的:

假設一個倉庫X的修訂歷史是這樣的:

...->2707->2708->2709->2710->2711 

2711的最新版本號X. 可能存在介於版本2708和2711之間的錯誤。您知道該錯誤在修訂版2707中不存在。它可能已在2708,2709,2710或2711處引入。基本上,您有興趣知道哪個提交引入了錯誤。

一種做事的方法是在每個修訂版本號上返回(回滾)本地存儲庫中的更改,並檢查錯誤是否仍然存在。假設說,錯誤是在2709版本你可以用folllowing命令來執行回滾提交的介紹:

$ svn update -r 2710 

的錯誤依然存在......

$ svn update -r 2709 

的錯誤依然存在..

$ svn update -r 2708 

該錯誤不存在。這意味着修訂版2709導致了該錯誤。

但是,你同樣可以做到,

$ svn merge -r 2711:2708 

兩者之間唯一的區別是,SVN更新,如果有局部變化將提高的標誌,讓你知道。您可以接受這些更改或恢復,以便在運行svn diff時不會有任何更改。另一方面,svn merge可以解決本地副本和存儲庫之間的差異。明智的做法是他們仍然會做同樣的事情,但他們只在這裏表現出行爲差異。