我有兩個分支: master和dev
我想從dev分支建立一個“功能分支”。
目前在分支機構dev上,我執行以下操作:
$ git checkout -b myfeature dev
... (一些工作)
$ git commit -am "blablabla"
$ git push origin myfeature
但是,在可視化我的分支之後,我得到了:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
我的意思是分支似乎在ff合并,我不明白為什麼...
我做錯了什麼?
您能否解釋一下我如何從另一個分支分支并推回功能分支的遠端存儲庫?
像這裡描述的那樣的分支模型中的所有内容。
#1樓
同時在
dev
分支上工作。 發生的情況是,在您的場景中,功能分支從dev分支的頂端向前移動,但是dev分支沒有改變。 繪制為直線更容易,因為可以将其視為向前運動。 您将其指向開發人員上的A,然後從那裡繼續沿着并行路徑前進。 這兩個分支并沒有真正分開。
現在,如果您對dev進行送出,則在合并之前,您将再次從相同的送出A開始,但是現在功能将轉到C,将開發人員轉到B。這将顯示您嘗試可視化的拆分,即分支現在分歧了。
*-----*Dev-------*Feature
與
/----*DevB
*-----*DevA
\----*FeatureC
#2樓
如果要從Git中的任何現有分支建立新分支,隻需遵循這些選項即可。
首先在要建立新分支的分支中更改/簽出。 例如,如果您具有以下分支,例如:
- 主
- 開發者
- 分支1
是以,如果你想建立一個名為“subbranch_of_b1”命名的分支下的新分支“BRANCH1”遵循的步驟:
- 結帳或更改為“ branch1”
-
現在,根據“BRANCH1”使用下面的指令建立名為“subbranch_of_b1”新的分支。
上面的代碼将建立一個名為分支BRANCH1下subbranch_of_b1新的分支(請注意,
上面的指令是不是強制性的,因為頭是目前指向它,你可以精确的,如果你是在一個不同的分支,雖然)。branch1
- 現在,在使用subbranch_of_b1之後,您可以在本地或遠端送出并推送或合并它。

将subbranch_of_b1推送到遠端
git push origin subbranch_of_b1
#3樓
建立一個分支
- 檢出主分支後建立分支。 master中的送出将被同步到您建立的分支。
$ git branch branch1
- 在檢出branch1時建立分支。 在這裡,在branch1中的送出将同步到branch2
$ git branch branch2
結帳分支
git checkout指令切換分支或還原工作樹檔案
-
$ git checkout branchname
重命名分支
-
$ git branch -m branch1 newbranchname
删除分支
-
$ git branch -d branch-to-delete
-
(在不檢查合并狀态的情況下強制删除 )$ git branch -D branch-to-delete
建立和切換分支
-
$ git checkout -b branchname
完全包含的分支
-
$ git branch --merged
************************** 分支差異 [git diff branch1..branch2] ************** **********
多行差異
-
$ git diff master..branch1
單行差異
-
$ git diff --color-words branch1..branch2
#4樓
如果您喜歡釋出的連結中的方法,請檢視Git Flow 。
這是他為該工作流程建立的一組腳本。
但是要回答你的問題:
$ git checkout -b myFeature dev
從dev建立MyFeature分支。 做你的工作,然後
$ git commit -am "Your message"
現在,無需快速前進即可将更改合并到開發人員中
$ git checkout dev
$ git merge --no-ff myFeature
現在将更改推送到伺服器
$ git push origin dev
$ git push origin myFeature
然後您會看到它想要的樣子。
#5樓
為了從另一個分支建立分支,也可以使用以下文法:
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
它比“ git checkout -b” +“ git push origin”短一點
#6樓
Git 2.23引入了
git switch
和
git restore
來分割
git checkout
的職責
從git 2.23開始,從現有分支建立一個新分支:
git switch -c my-new-branch
切換到新分支“ my-new-branch”
- -c是--create的縮寫-替換衆所周知的git checkout -b
看看這個 Github部落格文章,更詳細地解釋更改:
Git 2.23為現有的指令集帶來了一對新的實驗指令: git switch和git restore 。 這兩個是為了最終為衆所周知的git checkout提供更好的界面。 新指令旨在使每個指令有一個清晰的分隔,整齊地劃分出git checkout的許多職責
#7樓
如果要從另一個分支建立分支,請遵循以下步驟:
假設 :
- 您目前在master分支中。
- 您沒有要送出的更改。 (如果您有任何要送出的更改,請隐藏它!)。
-
是分支的名稱,您需要從該分支中建立一個名為BranchExisting
的新分支。BranchMyNew
步驟 :
- 将分支擷取到本地計算機。
此指令将在本地使用相同的分支名稱建立一個新分支。
- 現在,從主分支結帳到新擷取的分支
- 您現在位于BranchExisting中。 現在從該現有分支建立一個新分支。
幹得好!
#8樓
要從本地目錄中的另一個分支建立一個分支,可以使用以下指令。
git checkout -b <sub-branch> branch
例如:
- 要建立的新分支的名稱“ XYZ”
- 必須在其下建立XYZ的分支ABC的名稱
git checkout -b XYZ ABC