私は、マスターの前に2つのコミットで開発というプライベートトピックブランチがあるとします。開発ブランチでgit pull origin masterを実行するとどうなりますか?
git pull origin master
は何をしますか?
ローカルのリモートマスターからすべてを引き出してマージしますか?ローカルのマスターブランチのすべてを引き出し、マージしますか?
最初にgit checkout master
なしでマスターを開発から更新する方法はありますか?
私は、マスターの前に2つのコミットで開発というプライベートトピックブランチがあるとします。開発ブランチでgit pull origin masterを実行するとどうなりますか?
git pull origin master
は何をしますか?
ローカルのリモートマスターからすべてを引き出してマージしますか?ローカルのマスターブランチのすべてを引き出し、マージしますか?
最初にgit checkout master
なしでマスターを開発から更新する方法はありますか?
git pull origin master
は、originというリモートから現在のブランチにmasterブランチをプルします。 ローカルブランチではなく、現在のブランチにのみ影響します。
- x - x - x - x (develop)
\ /
x - x - x (origin/master)
あなたのローカルマスターブランチが、この中には無関係です:
は、それはあなたにこのような歴史探して何かを与えるでしょう。本質的には、git fetch
とgit merge
の組み合わせである。git pull
は、本質的にgit fetch
とgit merge
の組み合わせである。リモートブランチをフェッチして、現在のブランチにマージします。それは他のもののようなマージです。何も魔法を使わない。
ローカルのマスターブランチを更新する場合は、チェックアウトするしかありません。 Gitはマージを実行するために作業ツリーが必要なので、チェックアウトされていないブランチにマージすることは不可能です。 (特に、マージの競合を報告して解決できるようにするためには絶対に必要です)
マスターに引き込むのが早送りであることがわかった場合、つまりローカルマスターにコミットがない支店の原点にないブランチ)は、as described in this answerを回避することができます。
あなたはあなたがそれから行うことができます
git add -A
git commit -m <message>
を使用してブランチに変更しコミットしたら:あなたのブランチに
git pull origin master
、それはマスタープルの上にあなたのコミットを維持します。あなたのブランチはマスター+上のコミットでさえもなります。だから、あなたが今できること:マスターはあなたブランチにコミットして
git push
とgitのは一緒に、あなたの変更をプッシュします。それをGithubのマスターに簡単にマージすることができます。
@ mrjの答えの後に読んだ場合、これは良い追加でした。ほとんど同じように、 – kushalvm
ローカルでチェックアウトされていないブランチに転送することができます(高速転送可能な場合)。しかしそれはかなりハックです;) – knittl
@knittl:True!あなたが早送りできるかどうかを確認するという点で、プッシュは優雅です。 reflogに正しいトレースを残すことができるので、私は 'update-ref'ソリューションが好きです。私はそれに執着しています。 – mrj
@ e-satis:新規ユーザーに質問を投票させることは奨励されます...しかし、答弁する価値があり、アップヴォートの価値があることは必ずしも同じことではありません。 (あなたの質問は両方ですが) – Cascabel