分支只是提交指針。當沒有什麼東西可以指向時,你會進入一些奇怪的領域。老實說,如果你只是希望得到一個「乾淨」的工作流的歷史,所以第一次提交任何意義的是develop
合併爲master
,添加一個微不足道的承諾master
第一:
git branch --move master develop
git checkout --orphan master
git rm -rf . ;# abandon the staged, orphaned changes
echo README > README ;# put something in this working directory
git add README && git commit -m "Initial commit of <my_project>"
爲什麼犯些什麼呢?因爲一旦您運行--orphan
結賬,您將無法對master
分行執行任何有意義的操作。嘗試一下:
$ git checkout --orphan master
Switched to a new branch 'master'
$ git checkout develop && git checkout master
error: pathspec 'master' did not match any file(s) known to git.
如何合併?
$ git checkout --orphan master
Switched to a new branch 'master'
$ git merge develop
fatal: Non-fast-forward commit does not make sense into an empty head
沒有骰子。解決這個問題的唯一方法就是向某個空分支提交一些東西,任何東西。你做的那一刻,您可以合併develop
任何你想要的方式:
$ git merge develop
Merge made by the 'recursive' strategy.
README | 1 +
1 file changed, 1 insertion(+)
create mode 100644 README
和日誌:
$ git log --graph --oneline
* 867a1f9 Merge branch 'develop'
|\
| * 22df145 README
* 15ba82a Initial commit of test project
我想你找到的第二個序列的原因是'git的結帳--orphan ''是'git'的一個相對較新的增加,部分是爲了解決這種情況。第二個序列部分工作(如布雷克答案中所述),但不足以實現目標。 – twalberg
感謝您的信息 - 它確實足夠新,我需要升級Git,因爲它在嘗試完成時只是說'錯誤:未知選項'orphan'。 :) –