是否有安全方式要重命名舊的提交(同時沒有發生分支),這是大約五六個提交當前提示的道路?重命名舊提交
重命名舊提交
回答
這取決於您是否已經將此提交推送到公共回購協議,或者支票合併。當提交已經公開可見時,以後無法更改提交。此外,可能的MQ工作不允許在之後編輯合併提交。
當提交不公開可見時,則可以將所有提交導入MQ(啓用mq擴展並針對提交是祖先的每個修訂調用hg qimport -r»Revision«
)。然後你用hg qpop --all
不應用所有補丁。之後,您可以使用hg branch »name«
更改分支名稱,當您提交時確實引入了新的分支名稱(在qpop之後,如果沒有分支,您的提交的祖先的分支名稱將用於下一個qpush命令名稱是顯式設置)。當你想編輯提交信息時,你可以通過hg qpush && hg qrefresh -e
來完成。要完成編輯,請致電hg qpush --all && hg qfinish --applied
。
編輯:示例工作流
之所以這樣說,是初始狀態,並要編輯4:
8 [default] (tip)
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
現在你導入所有的版本,包括4,放入水銀隊列,hg qimport -r 4:8
,現在您有以下歷史記錄:
8 [default] (8.diff, qtip, tip)
|
7 (7.diff)
|
6 (6.diff)
|
5 (5.diff)
|
4 (4.diff, qbase)
|
3 (qparent)
|
2
|
1
|
0
下一步是取消應用所有補丁:hg qpop --all
3 [default] (tip)
|
2
|
1
|
0
不要驚慌,你的歷史沒有消失,它仍然存在於.hg/patches中。現在分支名稱可以設置爲hg branch newbranch
。這在歷史記錄中不可見,直到創建新的提交。但分行名稱可以用hg branch
顯示。
現在第一冷凍提交的時候可以重新申請與hg qpush
:
4 [newbranch] (4.diff, qbase, qtip, tip)
|
3 [default] (qparent)
|
2
|
1
|
0
現在你可以改寫的提交信息與hg qrefresh --edit
。您也可以通過編輯工作副本中的某些文件來更改內容。因此,如果您只想更改提交信息,請確保您在致電hg qrefresh
之前未修改工作副本中的任何文件。如果您在致電hg qrefresh
之前運行hg status
,則可以檢查此項。
4 [newbranch] (4.diff, qbase, qtip, tip) {new commit message}
/
3 [default] (qparent)
|
2
|
1
|
0
您可以hg qpush
和hg qpop
編輯還承諾,將導航到每個人。完成後,您需要將補丁程序轉換回常規修訂版本。這通過應用所有補丁完成,並完成隊列。這由hg qpush --all
完成,然後是`hg qfinish --all
。現在的歷史是這樣的:
8 [newbranch] (tip)
|
7
|
6
|
5
|
4 {new commit message}
/
3 [default]
|
2
|
1
|
0
+1這只是我本地的離線回購,個人項目。在此期間沒有合併,分支或任何事情發生,也沒有被推到任何地方。要求給我一個簡單的例子,說明我需要做些什麼來重命名它,是否太多了?我不明白,不幸的是,上述的一半 - 但是,我再次以相當簡單的方式使用hg。 – Rook
由於這是尚未在任何地方推私人回購協議,它應該是絕對安全的編輯歷史。 (請注意,在一般情況下,,歷史編輯不是一個可行的選項。它只適用於回購尚未公佈的情況。)
有很多Mercurial擴展允許編輯歷史記錄,mq
就是其中之一。但是,histedit
擴展可能更容易在你的情況。它不包含在Mercurial中,但可以從https://www.mercurial-scm.org/wiki/HisteditExtension相當容易地安裝。
一旦它的成立:
$ hg histedit -r $ID_OF_THE_CHANGESET_YOU_WANT_TO_EDIT
這將打開任何一個文本編輯器,您通常使用hg commit
,與變更集的列表;此列表包含之後的每個變更集,因此請滾動至底部。你會看到這樣的事情每個變更:
pick 2d5657b340e5 The original message for that commit
對於您需要修改變更,變更pick
到edit
。然後保存並退出。回到shell提示符下,執行:
$ hg histedit --continue
和往常一樣,系統會提示您提供新的提交消息。
- 1. SharpSvn本地文件重命名提交
- 2. 在github中重命名用戶提交
- 3. 重命名提交/變更的水銀
- 4. 將mercurial提交併重命名並編輯爲兩個提交(首先重命名,然後編輯)
- 5. 列出舊提交中的文件名
- 6. 命名幾次提交
- 7. 重寫舊類的命名約定?
- 8. 重命名合併提交而不會丟失提交的父項
- 9. 重點保持舊的名稱重命名後
- 10. Box長輪詢API重命名獲取舊的重命名文件
- 11. 重命名的文件集時,舊名新名稱在Python3
- 12. GitHub:恢復舊提交
- 13. Git:恢復舊的提交
- 14. Git-歸檔舊提交
- 15. 回到github的舊提交
- 16. SvnAnt掛起提交重命名的SVN文件夾
- 17. 上重命名文件,該文件尚未提交
- 18. 無法將重命名文件提交到Subversion(SVN)
- 19. WordPress登錄表單:重命名標籤提交字段
- 20. 如何在git中將錯誤作者重命名爲提交
- 21. GIT重命名分支並保留所有提交歷史
- 22. 提交文件重命名烏龜汞變化
- 23. 重命名整個Git提交歷史記錄中的目錄
- 24. Lib.Web.Mvc重命名提交取消按鈕和表單標題
- 25. 重命名文件,現在SVN不允許我提交?
- 26. 重命名iOS應用提交給AppStore的
- 27. 你如何重命名推送到GitHub的Git提交?
- 28. 如何重命名/聯合目錄提交
- 29. 如何查找所有提交git的所有重命名?
- 30. 在提交後添加到mercurial中的重命名跟蹤
你是什麼意思「重命名」?提交沒有要更改的名稱。 –
@PaulS - 無需過於迂腐。我認真考慮過每個人都會明白這個措詞。如果您願意,如何更改日誌消息。 – Rook
不要試圖迂腐,只是不確定你想做什麼。例如,您可能一直在討論分支名稱,並且您有一個答案,告訴您如何更改分支名稱。不僅僅是我被誤解了。 –