我剛剛從遠程克隆了一個回購。本地提交後的差異
我構建的軟件,更改了約4個文件,承諾他們在本地,現在想創建一個補丁,我可以顯示他們。
當我運行:
hg diff -U8p abc efg pqr > patch_file
我沒有看到我所做的更改。 hg diff
只會將當前文件與上次提交的文件進行比較嗎?
我如何得到這個工作?
我剛剛從遠程克隆了一個回購。本地提交後的差異
我構建的軟件,更改了約4個文件,承諾他們在本地,現在想創建一個補丁,我可以顯示他們。
當我運行:
hg diff -U8p abc efg pqr > patch_file
我沒有看到我所做的更改。 hg diff
只會將當前文件與上次提交的文件進行比較嗎?
我如何得到這個工作?
要diff
針對特定版本REV
工作目錄,使用
hg diff -r REV
要互相比較兩個版本,使用
hg diff -r REV1 -r REV2
要弄清楚哪些修訂比較,檢查hg log
的輸出。如果你會做這個有很多和基礎版本是固定的,給它一個名稱(例如,whatipulled)與
hg tag -r REV whatipulled
然後,您可以指定whatipulled
作爲修訂,而不是數字轉速ID (或散列)。
要導出的diff更豐富的格式,包括提交評論等,你還可以使用其目的是爲了這個目的如下:
hg export -r REV
還有hg bundle -r REV
,其產生的二進制文件具有類似的信息。
但是,如果你發送更改回母公司回購,最好的方法是使用hg push
。它將您的變更集直接傳達給家長;你甚至不需要知道哪些變更需要推送。當然,你必須有權推到父母回購。
hg push [ parent_repo_url ]
(如果你很拽,善變應該已經知道的路徑,你可以離開它)。
如果父回購是在bitbucket上,並且您沒有pu,則可以在bitbucket上設置您自己的帳戶,從本地回購庫中拉出/推送該帳戶,然後發出「拉請求」給項目回購,要求他們從你那裏拉。
以上所有都有控制其行爲的選項,請參閱。
默認情況下,hg diff
將當前檢出的文件與上次提交進行比較。您可以通過添加選項更改此:
-r REV
當前簽出的文件與特定修訂REV
進行比較。-c REV
顯示了修訂版本的情況下做出REV
所以變化hg diff -c 123 ...
會給你的差異。如果只指定一個版本,那麼提交123
如果我需要將它與最初克隆的回購進行比較,該怎麼辦?我做了任何改變之前的一個。該版本的「REV」是什麼? – batman 2013-02-24 12:50:59
從hg help diff
該修訂版與工作目錄
在diff的-r中,必須先使用舊的提示(最新的「不是你的」變更集),並在差異化之前更新到提示(最新的變更集)。
如果一些二進制數據是在您的變更修改,不要忘記使用-g選項
hg up & hg diff -r <CSET> -g > some.patch
改進DIFF任何主動變更,沒有手的工作檢測基地變更(線性在單分支歷史==)
hg diff -r "parent(min(outgoing()))" -r tip
我的猜測是,hg outgoing
是你想要什麼 - 它比較您在本地有犯了什麼默認遠程服務器上有什麼,並向您顯示這些更改集的列表或-p
提交。
但是,這樣做會分別顯示每個變更集。如果你想看到所有組合的變化,你必須做hg diff -r HERE -r THERE
或因爲-r HERE
是默認的,hg diff -r THERE
我看到你問了註釋「我怎麼知道有什麼」,其中其中是最後一個遠程變更集,您可以通過執行hg outgoing
來獲得答案。如果hg outgoing
顯示它會發送變更集66,67和68,那麼您想要做hg diff -r 65
來比較已有的(65)和本地的(68)。
使用revset(直接在diff中)會更聰明。在線性歷史記錄的情況下,revset將爲「父(min(outgoing()))」 – 2013-02-24 20:10:48
良好的呼叫。你應該改變你的答案。 – 2013-02-25 03:40:20
爲什麼不使用捆綁,如果雙方是水銀,而不是差異? – 2013-02-24 14:20:25
@LazyBadger:我不知道這一點。是的我可以。但是他們的網站提到了這種方法 – batman 2013-02-24 16:31:27