簡體   English   中英

在svn中提交/更新/合並命令

[英]commit/update/merge commands in svn

我想確切地知道什么時候應該在svn中使用commit,update和merge命令。

在我簽出項目並更改了代碼后,我應該使用更新,提交或合並來保持同步嗎?

如果我錯了糾正我:

更新=存儲庫中的所有更改都將復制到本地項目。

commit =將本地項目中的所有更改都復制到存儲庫中。

merge =與上面相同,但是您確定方向嗎?

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

我引用《 SVN書》

典型的工作周期如下所示:

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

進行更改 您將進行的最常見更改是對現有文件內容的編輯。 但是有時您需要添加,刪除,復制和移動文件和目錄-svn addsvn deletesvn copysvn move命令處理工作副本中的這些結構性更改。

查看您的更改 svn statussvn 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM