私はdmgr2(開発)というブランチを持っており、マスターブランチ(ライブサイト)から引き出し、すべての変更を自分の開発ブランチに組み込みたいと思います。これを行うには良い方法がありますか?ここ は私が行う上で計画していたものです:gitをmasterから開発ブランチに引き出す
git checkout dmgr2
git pull origin master
これは私の開発ブランチにライブ変更をプルする必要があり、または私はこの間違ったを持っていますか?あなたが記載されている
私はdmgr2(開発)というブランチを持っており、マスターブランチ(ライブサイト)から引き出し、すべての変更を自分の開発ブランチに組み込みたいと思います。これを行うには良い方法がありますか?ここ は私が行う上で計画していたものです:gitをmasterから開発ブランチに引き出す
git checkout dmgr2
git pull origin master
これは私の開発ブランチにライブ変更をプルする必要があり、または私はこの間違ったを持っていますか?あなたが記載されている
の手順が動作しますが、あなたはより多くのオプションを提供します長い方法があります:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
fetch
コマンドはつまり、あなたがの順序を入れ替えることができ、merge
前の任意の時点で行うことができますfetch
は名前付きリモコン(origin
)に行き、「私が持っていないことをすべて手に入れてください」と言います。つまり、すべてのブランチにコミットします。それらはリポジトリにコピーされますが、リモートのbranch
というブランチの場合はorigin/branch
という名前になります。
この時点では、ビューア(git log
、gitk
など)を使用して、自分が持っていないものを表示することができます。逆も同様です。時にはこれは、あたかも暖かいファジー感情( "ああ、そうです、それは実際に私が欲しいものです")にのみ役立ち、時には戦略を完全に変えるのにも役立ちます。
最後に、merge
コマンドは、origin/master
として名前を付けることができ、与えられたコミット取り、それはあなたがmerge
を実行するときに、あなたがどんな枝に、そのコミットとその祖先に持って来るために取るものは何でもありません。 --no-ff
または--ff-only
を挿入すると、早送りを防止したり、早送りの場合にのみマージしたりできます。
あなたはシーケンスを使用します。
git checkout dmgr2
git pull origin master
pull
コマンドがgit fetch
を実行し、git merge origin/master
の道徳的同等にするgitのを指示します。だからこれはです。手で2つのステップを実行するのと同じですが、おそらくそれほどあなたに関係していない微妙な違いがあります。 (特にpull
によって実行fetch
ステップはのみorigin/master
の上にもたらし、そしてそれはあなたのレポで参照を更新しません:1新たなコミットを巻き取る呼ば-にのみ特別FETCH_HEAD
参照することによって。)
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
:あなたはシーケンスを(その後、必要に応じて辺りを見回す)より、明示的なgit fetch origin
を使用して、git merge origin/master
場合は、ネットワーク全体で一つだけfetch
実行して、リモートで最新の状態にあなた自身のローカルmaster
をもたらすことができます例えば。
この第二の部分は変更さ-Iがされてきた今、日和見 "リモートブランチ" の参照を更新し-in gitの1.8.4を、 "固定" と言います。 (リリースノートのように、アップデートをスキップする意図的な設計の決定だったが、もっと多くの人々がgitをアップデートすることを好むことが判明した。古いリモートブランチSHA-1が必要な場合は、デフォルトではreflogに保存され、したがって回復可能です。これにより、アップストリームのリベースを見つけるためのgit 1.9/2.0の新しい機能が有効になります)。
私はちょうど友人を求めています - ここにある最初のコードブロック(チェックアウト/フェッチ/マージ)を元に戻すにはどうしたらいいですか? –
@RichBradshaw: 'git checkout'は通常は破壊的ではなく、通常は' git fetch'を元に戻す必要はないので、マージコミットを取り消す方法を聞いているようです。答えは他のコミットと同じです: 'git reset'か' git revert'です。 *未公開*の変更については、通常はgit resetが最適な方法です。すでに他の変更がある場合は、 'git revert'が良いかもしれませんが、マージを元に戻すためのLinus Torvaldのアドバイスを参照してください:https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a- faulty-merge.txt – torek
どのマージビューアプログラムを使用するかはどのように設定しますか? – PositiveGuy
dmgr2ブランチの変更をすべてコミットします。 master 1.git checkout masterをポイントして最新の変更を取得します 2.git pull 3.git merge dmgr2 4.git push -u origin masterそして、あなたのdmgr2に戻ります。 5.git checkout dmgr2 –
私はすでにdmgr2ブランチへの変更をすべてコミットしました。申し訳ありませんが、私がステップ4を実行する場合は –
を追加するのを忘れてしまいました。私はそれをしたくない –