我從SVN移動到HG和有困難時期的一些限制HG是對我施加:HG:匹配遠程回購的變更
我在一個情況下,我有一些錯誤提交,我想要吹走。事實上,如果我能匹配遠程回購的歷史,那將是非常好的。
使用Git,這是易如反掌:
git reset --hard origin/branch_name
但我怎麼能有水銀做呢?從我聽說的情況來看,如果你不知道自己在做什麼,移動'小費'可能會無意中產生匿名分支,這與git處理相同操作的方式截然不同。
我從SVN移動到HG和有困難時期的一些限制HG是對我施加:HG:匹配遠程回購的變更
我在一個情況下,我有一些錯誤提交,我想要吹走。事實上,如果我能匹配遠程回購的歷史,那將是非常好的。
使用Git,這是易如反掌:
git reset --hard origin/branch_name
但我怎麼能有水銀做呢?從我聽說的情況來看,如果你不知道自己在做什麼,移動'小費'可能會無意中產生匿名分支,這與git處理相同操作的方式截然不同。
「等效」 爲你想要的是hg strip
從MQ擴展名,您可以用它來「吹走」您的提交。
https://www.mercurial-scm.org/wiki/StripExtension
另一種 「等價物」 是:
hg update --clean
隨着-C/- 清潔選項,提交變更都丟棄, 工作目錄更新到所請求的變更。
Mercurial for Git users有一個命令等價表:
的git的復位 - 硬==汞還原-a --no備份
一個簡單的解決方案,它常常被忽視的吹走不需要提交是簡單地複製他們去
hg clone origin new_clone
rm -rf repo_with_unwanted_commits
現在new_clone
將你送回在遠程回購的小費。如果你有你的克隆其他提交您還沒有推開,但仍然有需要,你可以在本地克隆:
hg clone -r tip_you_want repo_with_unwanted_commits new_clone
rm -rf repo_with_unwanted_commits
現在new_clone
包含了一切你想要的提交,但不包括那些你想要的垃圾。在這種情況下,您只需在new_clone
的hgrc中設置[paths]
以指向原始的原點回購,然後回到開始的位置。
這很簡單,不需要擴展,但是請注意,manojlds使用hg strip
的建議會更快,並且您可以保留任何可能需要的未跟蹤文件。無論在哪種情況下,只有在您尚未推送要刪除的變更集時才能使用。如果你已經推動,你唯一的安全選擇是hg backout
。
+1,+1000,如果我可以......這應該是標記的答案!其他答案指向擴展名,但不顯示如何很好地選擇未推送的更改集。 – Assimilater
爲什麼切換到第一位? ;) – knittl
這不是我的選擇:( – Ben