有一個標簽1.2和一個分支exp。
我可以通過檢查標簽git checkout 1.2,它使我處于分離的頭部狀態,這很好。我已經在服務器上創建了一個分支 = exp。該分支exp基于master. 截至目前master(因此也是exp)在1.2.
我想做的是開始1.2并保留我未來對分支的所有提交exp。
但是,當我這樣做時
git checkout 1.2 -b exp
我收到一個錯誤
fatal: a branch named 'exp' already exists
我理解這背后的邏輯,我意識到實踐是創建一個新分支。
我本質上想要的是使用現有的分支名稱exp而不是創建新的分支。我不在乎exp是領先還是落后1.2
例如,以下時間線:
t = 0 --> 簽出
1.2t = 1 --> 將新代碼添加到 tag
1.2。所有這些新代碼都必須位于現有分支上,exp因為我無法在標簽上提交。
t = 0 對我來說很清楚,但 t = 1 不是。
uj5u.com熱心網友回復:
致命:一個名為“exp”的分支已經存在
有一個解決方案非常簡單:洗掉現有分支。
git 中的分支實際上具有零元資料,它只是一個參考提交的名稱。“在”一個分支上提交只是將相同的名稱指向一個新的提交。如果您想將該名稱指向其他地方,只需丟棄舊參考并創建一個新參考:
git branch -D exp
git checkout 1.2 -b exp
請注意,這里的“1.2”只是代表“標簽 1.2 指向的提交”——您真正指定的是“將新分支指向exp這個現有提交”。
還有其他方法可以實作相同的目標;最簡單的是使用git checkout -B而不是git checkout -b 這里記錄的:
git checkout 1.2 -B exp
也就是說,如果你的 git 不是太舊,你應該習慣于使用哪些git switch更直觀的命令來git restore處理各種事情。這種情況下的等價物是or:git checkoutgit resetgit switch -Cgit switch --force-create
git switch -C exp 1.2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518321.html
標籤:混帐
