2017-01-19 12 views
2

例えば、私はdevelopブランチに今だし、ローカルマスタにリモート・マスターを引きたい、私は何がある:gitコマンドを使ってブランチを引っ張るのですか?

$ git stash 
$ git checkout master 
$ git pull 
$ git checkout develop 
$ git merge master 

質問1:I develop内のローカルマスタにリモート・マスターを引く方法ブランチ?

質問2:1つのコマンドでリモートマスターをローカルにマージすることは可能ですか? 現在、私は4つのコマンドを使用しています

答えて

1

回答1:あなたの作業手順はquestion-1でOKです。

$ git fetch 
$ git stash 
$ git checkout master 
$ git pull origin master 

$ git checkout develop 
$ git stash apply 

回答-2:あなたが直接あなたのローカルdeveloporigin/masterを引くことができます。

$ git fetch 
$ git pull origin master 
+0

私は、別のケースで別のフェッチをする必要はないと思います。 –

+0

はい。最初に 'answer-1'コマンドを実行すると、2回目の' fetch'は必要ありません。実際には、私はここで2つの答えを独立して与えようとしました。 –

+0

http://stackoverflow.com/questions/292357/difference-between-git-pull-and-git-fetchとhttps://git-scm.com/docs/git-pullに従って「git pull」で行います。とにかく、 "git fetch"はローカル状態を変更しないので、2回連続して実行するのがいいですが、実際には必要ありません。 –

0

あなたは、そこorigin/masterからmasterへの1つ、developからmasterからの第二の2つのマージをやっている、とあなたは汚いworktreeから始まるそれらをやっています。

masterの両方でファイルが変更された場合、gitはコンテンツの一部を処理し、重複するリージョンに影響を与えないものをマージし、おそらくあなたのものをパントします自身の検査。

通常、あなたは上記示しシーケンスは、人間の介入なしで実行することができますが、の知っておくべき重要なことは、すべてのステップ(ともあなたは示さなかったgit stash pop)で、それが誰かのことは非常に可能だ、ということですマージ競合を見て、実際に何が意味されているかを判断する必要があります。

ここで私は普通与える例です:あなたは

if (g->tag == mark 
    || g->tag == error) { 

if (tag == mark 
    || tag == error) { 

を変更し、他の誰かが、Gitが行うことになっているもの

if (tag == mark 
    || tag == error 
    || tag == release) { 

に変更したと?私はそれが可能な限り唯一のことしかできないと主張します。それは穿孔し、結果がどのように見えるかをあなたに尋ねます。 C-家族言語に精通している誰もが、正しい解像度が

if (g->tag == mark 
    || g->tag == error 
    || g->tag == release) { 

が、それは本当に正しい解像度が合理的な期待の一般的に受け入れられた範囲内にない場合にのみ、ということに到着しているすべてが、特定されます。

0

あなたの質問2(サジブを参照)には他にも良い回答があります。質問1への短い答えは、「できません」です。

しかし、あなたの質問を「私はリモートマスターをマスターに引き込み、開発をチェックアウトしてもよろしいですか?あなたは有利にgit worktreeを使用することができます。これは、作業ツリーで行う通常の作業をすべて行うための別の作業ツリーを提供します。

あなたが開発ブランチにしているとマスターを更新したい場合は、例えば:

git worktree add ../second-repo master 
git -C ../second-repo merge origin master 

今すぐあなたの地元のレポにマスター更新されています。

上記のコマンドを説明するために、git worktreeはマスターを別のフォルダ(../second-repo)にチェックアウトします。 2番目のコマンドは、ディレクトリを新しいワークツリーに事実上変更した後にのみgit merge origin masterを実行します。作業領域を設定したら、再度設定する必要はありません。同じワーク・ツリーを使用してマスターを更新し続けることができます。

関連する問題