1. ホーム
  2. git

[解決済み] 現在のブランチでないブランチに 'git pull' するには?

2022-05-10 19:52:31

質問

を実行すると git pull を実行すると master ブランチでは、通常 origin/master . という別のブランチにいます。 newbranch という別のブランチにいるのですが、このブランチに対して git pull から origin/mastermaster を実行することができません。 git checkout を実行して、プルが完了するまで選択したブランチを変更することができません。 これを行う方法はありますか?

背景を説明すると、リポジトリはウェブサイトを保存しています。 私はいくつかの変更を newbranch に変更を加え、デプロイしました。 newbranch . 現在、これらの変更は上流にマージされ master ブランチにマージされたので、私はこのウェブサイトを再び master というブランチを作成します。 この時点では newbranchorigin/master は同じですが master は遅れている origin/master に遅れていて、更新する必要があります。 問題は、従来の方法でやると

$ git checkout master
   # Uh oh, production website has now reverted back to old version in master
$ git pull
   # Website is now up to date again

上記と同じことを実現したいのですが( git checkout master && git pull ) を実現する必要がありますが、作業ディレクトリを処理中に以前のリビジョンに変更する必要はありません。

どのように解決するのですか?

触りたくないワークツリーがあるのだから、別のものを使えばいい。 クローンは安いから、このために作られたんだ。

git fetch origin master       # nice linear tree
git clone . ../wip -b master  # wip's `origin/master` is my `master`
cd ../wip                     # .
git pull origin origin/master # merge origin's origin/master
git push origin master        # job's done, turn it in.
cd ../main
rm -rf ../wip                 # wip was pushed here, wip's done

git checkout master           # payload

ここでの他の回答の問題点は、実際にpullを行わないことです。もし、pullを設定したマージやリベースが必要な場合は、別のワークツリーと上記の手順が必要です。そうでなければ、単に git fetch; git checkout -B master origin/master で十分です。