私は2つのブランチを持っています: 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マージされているように見えることを意味します、そして私はなぜ理解できません...
何が悪いの?
どのようにして他のブランチから分岐して機能ブランチのリモートリポジトリにプッシュバックしてください。
ここで説明されているもの のような分岐モデルのすべて。
あなたが投稿したリンクの中の方法が好きなら、 Git Flow を見てください。
それは彼がそのワークフローのために作成したスクリプトのセットです。
しかしあなたの質問に答えるために:
$ git checkout -b myFeature dev
DevからMyFeatureブランチを作成します。あなたの仕事をしてから
$ git commit -am "Your message"
早送りせずに変更をdevにマージする
$ git checkout dev
$ git merge --no-ff myFeature
今すぐサーバーに変更をプッシュ
$ git Push Origin dev
$ git Push Origin myFeature
そして、あなたはそれがあなたがそれを望む方法でそれを見るでしょう。
Gitの既存のブランチから新しいブランチを作成する場合は、オプションに従ってください。
最初に、新しいブランチを作成するブランチから変更/チェックアウトします。たとえば、次のようなブランチがある場合:
"subbranch_of_b1"という名前のブランチの下に "branch1"という新しいブランチを作成する場合手順に従います。
チェックアウトまたは"branch1"に変更します
git checkout branch1
次のコマンドを使用して、"subbranch_of_b1"という新しいブランチを"branch1"の下に作成します。
git checkout -b subbranch_of_b1 branch1
上記はsubbranch_of_b1という新しいブランチをブランチの下に作成しますbranch1(上記のコマンドのbranch1
はHEADは現在それを指していますが、別のブランチにいる場合は正確に指定できます)。
subbranch_of_b1で作業した後、ローカルまたはリモートでコミットしてプッシュまたはマージできます。
subbranch_of_b1をリモートにプッシュします
git Push Origin subbranch_of_b1
dev
ブランチで同時に作業してください。あなたのシナリオでは、featureブランチはdevブランチの先端から前方に移動しますが、devブランチは変わらないということが起こります。直線として描くのは簡単です。なぜならそれは前進運動と考えることができるからです。あなたはdevでAを指すようにしました、そしてそこからあなたは単に平行な道を続けました。 2つの枝は実際には分岐していません。
マージする前にdevでコミットすると、再び同じコミットAで始まりますが、今度は機能はCに、devはBになります。今分岐しています。
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC
Git 2.23では、 git switch
と git restore
を導入して、git checkout
の役割を分割しています
git 2.23の時点で既存のブランチから新しいブランチを作成:
git switch -c my-new-branch
新しいブランチ「my-new-branch」に切り替えました
this Githubのブログ投稿を見て、変更点について詳しく説明してください:
Git 2.23は、既存のスイートに実験的なコマンドの新しいペアをもたらします:git switchおよびgit restore。これらの2つは、よく知られているgitチェックアウトのためのより良いインターフェースを最終的に提供することを意図しています。新しいコマンドはそれぞれ明確な分離を意図しており、git checkoutの多くの責任をきれいに分割します。
別のブランチからブランチを作成する場合は、次の手順に従います。
仮定:
BranchExisting
は、BranchMyNew
という名前の新しいブランチを作成する必要があるブランチの名前です。ステップ:
ブランチをローカルマシンにフェッチします。
$ git fetch Origin BranchExisting : BranchExisting
このコマンドは、ローカルに同じブランチ名で新しいブランチを作成します。
さて、マスターブランチのチェックアウトから新しくフェッチされたブランチまで
$ git checkout BranchExisting
これでBranchExistingになりました。次に、この既存のブランチから新しいブランチを作成します。
$ git checkout -b BranchMyNew
どうぞ!
別のブランチからブランチを作成する場合は、この構文も使用できます。
git Push Origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
"git checkout -b" + "git Push Origin"より少し短いです。