私の現在のブランチがmyfeatureだとしましょう。マスターを最新の状態にしたいと思います。両方とも git merge
git pull
私が知る限り、常に現在のブランチにマージします。
リモートブランチ(例:オリジン/マスター)から現在行っていないブランチ(マスター)に変更をマージする方法はありますか?私は1つの方法を考えることができます:
git stash
git checkout master
git pull Origin/master
git checkout myfeature
git stash apply
より良いものはありますか?
(おそらく私の質問全体が間違っている可能性があります:だろうgit fetch
リモートトラッキングが有効になっている場合、オリジン/マスターに一致するようにマスターを自動的に更新しますか?)
プル/マージは現在のブランチにのみマージされるというのは正しいです。
ただし、フェッチは引き続き使用できます。たとえば(以下の名前は無実を保護するために変更されましたが、ハッシュは本物です):
_$ git branch | grep '^*'
* SOMEBRANCH
$ git rev-parse OTHER_BRANCH Origin/OTHER_BRANCH
7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe
7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe
$ git fetch
7b9b8e5..1efca56 OTHER_BRANCH -> Origin/OTHER_BRANCH
$ git rev-parse OTHER_BRANCH Origin/OTHER_BRANCH
7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe
1efca56c08b7a0f511a3951195656a798c56aa62
_
この場合、fetch
は一連のOrigin /ブランチを更新しました。ローカルブランチはどれも更新されませんでしたが(_git rev-parse
_の出力は同じままです)、新しいコミットはリポジトリにあり、表示できます(_git log Origin/OTHER_BRANCH
_、_gitk --all
_など)。
ニーズによっては、これで十分な場合があります。特に、現在のブランチを離れることなく、_Origin/master
_からmaster
に何を適用する必要があるかを確認できます。
git fetch -u Origin master:master
チェックアウトを使用せずにGitブランチをマージ、更新、プルする
git fetch -u <remote> <remoteBranch>:<localBranch>
-u
は、コマンドが引き続き機能することを保証します 指定されたブランチがチェックアウトされている場合でも 。
作業中のさまざまなリポジトリ間で変化する個々のブランチをフェッチするのではなく、githubのhub sync
ヘルパーを使用してこのプロセスを自動化し始めました。
ハブはコマンドラインgitの拡張機能であり、ターミナルを離れることなく日常のGitHubタスクを実行するのに役立ちます。 https://hub.github.com/
$ hub sync
- ローカルブランチが古くなっている場合は、早送りします。
- ローカルブランチにプッシュされていない作業が含まれている場合は、それについて警告します。
- ブランチがマージされたように見え、そのアップストリームブランチが削除された場合は、それを削除します。