私は、masterの前に2回のコミットがある、developというプライベートトピックブランチがあるとしましょう。
git pull Origin master
は何をしますか?
ローカル開発のリモートマスターからすべてを引き出してマージしますか?ローカルマスターブランチのすべてを引き出してマージしますか?
そして、最初にgit checkout master
なしで開発からマスターを更新する方法はありますか?
git pull Origin master
は、Originというリモートからマスターブランチを現在のブランチにプルします。 ローカルマスターブランチではなく、現在のブランチにのみ影響します。
次のような履歴が表示されます。
- x - x - x - x (develop)
\ /
x - x - x (Origin/master)
ローカルマスターブランチはこれには関係ありません。 git pull
は、本質的にgit fetch
およびgit merge
;リモートブランチをフェッチし、それを現在のブランチにマージします。それは他のようなマージです。魔法のようなことは何もしません。
ローカルマスターブランチを更新する場合は、チェックアウトする以外に選択肢はありません。 Gitはマージを実行するために作業ツリーを必要とするため、チェックアウトされていないブランチにマージすることはできません。 (特に、マージの競合を報告し、それらを解決できるようにするために絶対に必要です。)
マスターへのプルが早送りになることがわかっている場合(つまり、ローカルマスターブランチにOriginのマスターにないコミットがない場合)、回避することができます この回答で説明されているように =。
コミットしたら、使用してブランチに変更を加えます
git add -A
git commit -m <message>
その後、次のことができます。
git pull Origin master
ブランチに追加すると、コミットがマスタープルの上に保持されます。これで、あなたのブランチは、マスター+コミットが一番上になります。そのため、次のことができるようになりました。
git Push
gitは、マスターコミットと共に変更をブランチにプッシュします。その後、それをGithubのマスターに簡単にマージできます。