2016-05-25 2 views
1

が--rebaseオプション付きとなしの違いは何ですか?heregit mergeのrebaseオプションの目的は何ですか?

git pull --rebase origin master 

からのgitを学びますか私は、リベースオプションを使用すると、コミットが同期した後に、自分のコミットをマスターブランチに置くことができますが、それは通常どおりに起こるのではないということを読んでいます。

私はまた、チェックアウト中にオプションとしてブランチを指定する目的を理解していません。

git checkout -b marys-feature master 

は、なぜあなたはmasterを指定する必要がありますか?すでにマスターしている場合は、新しいブランチを自動的に作成してマスターブランチのコピーにしないでください。そうであれば、コピーを作成したいブランチを指定することは、ブランチ(現在チェックアウトされているブランチ)上でコピーしたくない場合にのみ役に立ちます。

また、プッシュ中の-uオプションの目的は何ですか?

git push -u origin marys-feature 

あなたは-uを持っていない場合でも、それはリモート追跡ブランチ右ただろうか?あなたがプッシュするものは自動的にリモートトラッキングになると思いましたか?

+0

[git mergeではなくgit rebaseをいつ使用しますか?](http://stackoverflow.com/questions/804115/when-do-you-use-git-rebase-instead-of-git-マージ) – fyrye

+1

リモートマスタが 'ABCD'で、ローカルマスタが' ABC'の場合、 'git pull origin --rebase master'と' git pull origin master 'は同じです。リモートが 'A-B-C-D-E'でローカルが' A-B-C-D-F'なら 'git pull origin --rebase master'はローカルを' A-B-C-D-E-F 'に変えます。 --rebaseがなければ、 'A-B-C-D-E-F-M'のようなものになります(ここで申し訳ありませんが、正確なグラフは描けません)。 Mは親としてEとFの両方とのマージコミットです。これは、早送りマージと非早送りマージ(または真のマージ)の違いです。 – ElpieKay

+0

だから、リベースすれば余分な超流動コミットをスキップすることができます。 – akantoword

答えて

2

git pull doc

のgitから実行がgitの指定したパラメータでをフェッチし、Gitは現在のブランチに取り込むブランチヘッドをマージする をマージ呼び出して引っ張ります。 --rebaseで、それはgitのではなく、gitのをマージするをリベース実行します。 -bを指定 git checkout doc

から

はマスターが呼び出された後、チェックアウトされたかのように新しいブランチが作成されます。あなたのケースでは

gitのチェックアウト-bメリーズ・フィーチャーマスター
それはどんなブランチあなたが(コミットする変化を伴わない)上にあることを意味し、あなたはメリーズ-機能という名前の新しいブランチを作成します。ブランチからのコンテンツ付きマスターです。あなたの最後の質問をRergarding

、あなたは、このリンクを参照することができます:What exactly does the "u" do? "git push -u origin master" vs "git push origin master"

2

指定された上流の追跡ブランチを設定しますgit push -u ...

既にトラッキングされていない場合は、設定されます。ブランチにアップストリームトラッキングブランチが割り当てられている場合は、指定されたブランチに変更します(上書きします)。そのため、通常は、上流を定義するときに一度しか適用する必要がありません。

デフォルトでGit pushは、ブランチ名が異なる場合、リモートトラッキングブランチを自動的に割り当てません。push.defaultに関する詳細については、git-config documentationを参照してください。

が指定されたrefspecがない場合にgit pushが実行するアクションを定義します。異なる値は特定のワークフローに適しています。 インスタンスの場合、純粋に中央のワークフローで(つまり、取り出し元はプッシュ先に と等しい)、おそらくアップストリームは必要なものです。可能な の値は次のとおりです。

nothing - refspecが明示的に指定されていない限り、何もプッシュしません(エラー出力)。これは主に、明示的になることによって の間違いを避けたい人向けです。

current - 受信側の同じ という名前のブランチを更新するには、現在のブランチを押します。中央と非中央のワークフローで動作します。 ワークフロー

upstream - 現在のブランチを現在のブランチ(これは @ {アップストリーム}と呼ばれます)に通常組み込まれているブランチに戻します。このモードは、通常と同じリポジトリ(つまり中央ワークフロー)の にプッシュする場合にのみ有効です。

simple - 集中型のワークフローでは、上流分岐の名前は地元のものから 異なる場合プッシュすることを拒否するために追加 安全と上流のように働きます。

リモコンとは別のリモコンにプッシュすると、通常 がプルから、現在のものとして動作します。これは最も安全なオプションで、初心者に適した です。

このモードはGit 2.0でデフォルトになっています。

matching - 両端に同じ名前のすべてのブランチをプッシュします。この は、ブランチセットを覚えておくために押し込んだリポジトリにします。 maintとmasterを常に押し込んで と他のブランチがない場合、プッシュするリポジトリには の2つのブランチがあります。地元のmaintとマスターは、 がプッシュされます)。


git checkout -b marys-feature master

marys-featureという名前masterの新しいブランチを作成し、marys-featureに作業コピーを変更します

git branch marys-feature master 
git checkout marys-feature 

を実行するためのショートカットです。

ブランチの作成と作業コピーの変更の詳細については、git-branch documentationを参照してください。

関連する問題