我需要自動化交互式rebase或用其他命令替換它。讓我解釋我目前的情況:git:如何自動化交互式rebase /用等價的git命令替換它
在svn-> git轉換中,我需要重新綁定新創建的git存儲庫以修復SVN期間創建的「歷史截斷」。這是我的手動工作流程來解決問題。
branchNEW: containing history from SOMEDAY until now
branchOLD: containing history from past to SOMEDAY
編輯或ASCII:
branchNEW: Y - Z
branchOLD: W - X
兩個分支沒有共同提交。
現在的基本想法是將branchNEW重新綁定到branchOLD上。不幸的是,有一些重構SOMEDAY:有些文件被移動到另一個目錄。現在,重定位的結果是,每個移動的文件都存在於兩個地方。
編輯
some file exist in X
the (nearly) same files also exist in Y, just on another path
branchNEW: W - X - Y - Z
(after rebase)
底墊後,HEAD現在包含X的文件和Y的我也嘗試添加了新的承諾branchOLD其刪除舊文件。在底座SVN-HEAD和git-HEAD二進制相同之後,但「git log --follow」不起作用。
我們的主要問題:我能夠通過使用第二,互動變基到解決這個問題:
git rebase -i SHA
SHA是老根的SHA-ID犯branchNEW。現在在編輯器中,我必須將「pick」更改爲「編輯」最頂層的提交。退出編輯器後,我現在刪除了錯誤的文件
git rm -f fileA fileB
git commit --amend
git rebase --continue
這個混帳頭後是二進制等同於SVN的,另外頭,Git有完整的歷史,也有「git的日誌--follow」工程爲移動的文件。
由於這一步只是未來巨大的VCS轉換的一小部分,我需要編寫完整的流程腳本。 但如何自動執行上述步驟?
(我知道的SHA不會保持不變,但我能夠得到從SVN-ID被嵌入在每一個提交信息所需SHA)
我不確定,但'git filter-branch'可以幫助你。 – Jubobs 2014-09-19 16:58:51