我假設兩個分支與master
共享的歷史,在這裏你 錯誤是,你沒有git checkout -b branch2
,同時還對 branch1
。如果這不是真的,那麼你需要去解決這個問題,不同的方式。
因此,考慮與master
既branch1
和branch2
份額歷史,你可以 做修復branch2
:
$ git checkout branch2
$ git rebase --onto master branch1 branch2
這將在branch2
推出的提交和變基他們,使他們 從master
派生。換句話說,這個git rebase
將放棄在branch1
中引入的提交 - 但不是在master
中 - 並且僅留下在branch2
中引入的提交 。
對於你的問題的第二部分,不,沒有辦法告訴Git保留 某些目錄,而不是其他人。 Git處理 樹的提交和快照,而git branch
只是說「根據此 提交開始新分支」。如果歷史,就是要完全斷開,那麼你可以 創建孤兒分支 - 一個分支,將有沒有父 提交承諾:
$ git checkout --orphan NAME
這將創建一個新的分支,預 - 用當前樹填充。您可以 然後選擇使用git rm -rf <path>
刪除不需要的目錄。或者 用git rm -rf .
完全刪除所有內容。
雖然這樣做有一些後果。合併分支機構 彼此斷開可能會導致很多衝突,因爲Git不會知道如何到達那裏的一些數據,以及如何巧妙地合併數據。另一方面,如果在 上,你從不打算將它們合併(例如GitHub上的gh-pages
分支機構 ),那麼它們就很適合保留。
雖然我會在這裏提出幾點建議。首先,如果這些 確實應該是完全獨立的歷史記錄的獨立分支,那麼您可能希望它們位於單獨的存儲庫中。 -
另外,如果你在一個分支說branch10
--and要創建一個基於master
一個新的分支 ,你可以做到這一點很容易:
$ git checkout -b NAME master
換句話說,你可以選擇使用哪個提交或分支作爲您的起點 。
最後,由於不清楚爲什麼你想維護不同目錄在不同的 分支機構,我建議你退後一步,並檢查你想要完成的任務。在Git中有很多可能的情況,但是選擇違背其優點的方法會使工具更加難以使用,並且存儲庫難以共享。
據我所知git不跟蹤目錄只是文件?如果刪除它的內容,該目錄可能會消失。 – Croo
但我不希望該目錄遠離回購。我希望該目錄遠離當前分支。就像在不同分支中維護不同的目錄 –
也許你正在做一些根本錯誤的事情。爲什麼你需要在不同分支中維護不同的目錄。那個目錄的內容是什麼? – robert