[英]commit/update/merge commands in svn
我想確切地知道什么時候應該在svn中使用commit,update和merge命令。
在我簽出項目並更改了代碼后,我應該使用更新,提交或合並來保持同步嗎?
如果我錯了糾正我:
更新=存儲庫中的所有更改都將復制到本地項目。
commit =將本地項目中的所有更改都復制到存儲庫中。
merge =與上面相同,但是您確定方向嗎?
我什么時候使用上面的每個命令?
我引用《 SVN書》 :
典型的工作周期如下所示:
更新您的工作副本 。 這涉及使用svn update命令。
進行更改 。 您將進行的最常見更改是對現有文件內容的編輯。 但是有時您需要添加,刪除,復制和移動文件和目錄-svn add , svn delete , svn copy和svn move命令處理工作副本中的這些結構性更改。
查看您的更改 。 svn status和svn diff命令對於檢查您在工作副本中所做的更改至關重要。
糾正錯誤 。 沒有人是完美的,因此當您查看更改時,可能會發現不正確的地方。 有時,糾正錯誤的最簡單方法是從頭開始。 svn revert命令將文件或目錄恢復到其未修改狀態。
解決任何沖突 (合並其他人的更改)。 在您花費時間進行和檢查更改時,其他人可能也已經進行並發布了更改。 您將想要將它們的更改集成到工作副本中,以避免在嘗試發布自己的更改時可能出現的過時情況。 同樣, svn update命令是執行此操作的方法。 如果這導致局部沖突,則需要使用svn resolve命令解決沖突。
發布(提交)您的更改 。 svn commit命令將您的更改傳輸到存儲庫,如果更改被接受,它們將創建您修改的所有內容的最新版本。 現在其他人也可以看到您的作品!
讓我們看看“更新”和“合並”有何不同:
假設存儲庫X的修訂歷史如下:
...->2707->2708->2709->2710->2711
2711是X的最新修訂版本號。可能在2708和2711之間引入了一個錯誤。您知道該錯誤在2707版本中不存在。它可能已在2708、2709、2710或2711中引入。 ,您有興趣知道哪個提交引入了該錯誤。
一種解決方法是在每個修訂版本號上回退(回滾)本地存儲庫中的更改,並檢查錯誤是否仍然存在。 假設該錯誤是在2709版中引入的。您可以使用以下命令回滾提交:
$ svn update -r 2710
該錯誤仍然存在...
$ svn update -r 2709
該錯誤仍然存在...
$ svn update -r 2708
該錯誤不存在。 這意味着版本2709引起了該錯誤。
但是,您也可以這樣做,
$ svn merge -r 2711:2708
兩者之間的唯一區別是,如果發生本地更改,svn update會引發標志並告知您。 您可以接受這些更改,也可以恢復原狀,以便在運行svn diff
時沒有更改。 另一方面,svn merge將解決本地副本和存儲庫之間的差異。 從實用角度來看,他們仍然會做相同的事情,但是在這里它們僅表明行為上的差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.