web-dev-qa-db-ja.com

別のブランチからGitにブランチを作成する

私は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マージされているように見えることを意味します、そして私はなぜ理解できません...

何が悪いの?

どのようにして他のブランチから分岐して機能ブランチのリモートリポジトリにプッシュバックしてください。

ここで説明されているもの のような分岐モデルのすべて。

751
revohsalf

あなたが投稿したリンクの中の方法が好きなら、 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

そして、あなたはそれがあなたがそれを望む方法でそれを見るでしょう。

1059
Abizern

Gitの既存のブランチから新しいブランチを作成する場合は、オプションに従ってください。

最初に、新しいブランチを作成するブランチから変更/チェックアウトします。たとえば、次のようなブランチがある場合:

  • マスター
  • dev
  • branch1

"subbranch_of_b1"という名前のブランチの下に "branch1"という新しいブランチを作成する場合手順に従います。

  1. チェックアウトまたは"branch1"に変更します

    git checkout branch1
    
  2. 次のコマンドを使用して、"subbranch_of_b1"という新しいブランチを"branch1"の下に作成します。

    git checkout -b subbranch_of_b1 branch1
    

    上記はsubbranch_of_b1という新しいブランチをブランチの下に作成しますbranch1(上記のコマンドのbranch1はHEADは現在それを指していますが、別のブランチにいる場合は正確に指定できます)。

  3. subbranch_of_b1で作業した後、ローカルまたはリモートでコミットしてプッシュまたはマージできます。

A sample Graphical Illustration Of Creating Branches Under another Branch

subbranch_of_b1をリモートにプッシュします

 git Push Origin subbranch_of_b1 
322
Praveen George

devブランチで同時に作業してください。あなたのシナリオでは、featureブランチはdevブランチの先端から前方に移動しますが、devブランチは変わらないということが起こります。直線として描くのは簡単です。なぜならそれは前進運動と考えることができるからです。あなたはdevでAを指すようにしました、そしてそこからあなたは単に平行な道を続けました。 2つの枝は実際には分岐していません。

マージする前にdevでコミットすると、再び同じコミットAで始まりますが、今度は機能はCに、devはBになります。今分岐しています。

*-----*Dev-------*Feature

Versus

       /----*DevB
*-----*DevA
       \----*FeatureC
13
ToothlessRebel

Git 2.23では、 git switchgit restore を導入して、git checkoutの役割を分割しています

git 2.23の時点で既存のブランチから新しいブランチを作成:

git switch -c my-new-branch

新しいブランチ「my-new-branch」に切り替えました

  • -c-createの略で、よく知られているものを置き換えますgit checkout -b

this Githubのブログ投稿を見て、変更点について詳しく説明してください:

Git 2.23は、既存のスイートに実験的なコマンドの新しいペアをもたらします:git switchおよびgit restore。これらの2つは、よく知られているgitチェックアウトのためのより良いインターフェースを最終的に提供することを意図しています。新しいコマンドはそれぞれ明確な分離を意図しており、git checkoutの多くの責任をきれいに分割します。

2
JSON C11

別のブランチからブランチを作成する場合は、次の手順に従います。

仮定

  1. あなたは現在masterブランチにいます。
  2. コミットする変更はありません。 (コミットする変更がある場合は、隠してください!)。
  3. BranchExistingは、BranchMyNewという名前の新しいブランチを作成する必要があるブランチの名前です。

ステップ

  1. ブランチをローカルマシンにフェッチします。

    $ git fetch Origin BranchExisting : BranchExisting
    

このコマンドは、ローカルに同じブランチ名で新しいブランチを作成します。

  1. さて、マスターブランチのチェックアウトから新しくフェッチされたブランチまで

    $ git checkout BranchExisting
    
  2. これでBranchExistingになりました。次に、この既存のブランチから新しいブランチを作成します。

    $ git checkout -b BranchMyNew
    

どうぞ!

1
Darshit

別のブランチからブランチを作成する場合は、この構文も使用できます。

git Push Origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

"git checkout -b" + "git Push Origin"より少し短いです。

0