11

現在のブランチに影響を与えずに、リモート ブランチをフェッチし、そのブランチの git のローカル ref を更新するにはどうすればよいですか? たとえば、私がこれを行うと

$ git pull origin master

origin/master が現在のブランチにマージされました。これも効かない

$ git fetch origin master

それから私はチェックします

$ git branch -r -v
origin/HEAD   -> origin/master
origin/master 7cf6ec5 test 02

そのオリジン/マスターリファレンス「7cf6ec5 test 02」が遅れています。本当のオリジン/マスターは「XXXXXX テスト 03」です。 git fetch変更を FETCH_HEAD にプルしただけで、ローカルの起点/マスター ref をアップロードしませんでした。その参照を更新するためのステップは何ですか?

ノート:

$ git fetch origin

すべてのリモート ref を取得して更新しますが、残念ながらそれは (a) 多くの混乱です。(誰かが私のものを欲しがらないことを知っている他の誰かの30〜50のランダムなブランチは欲しくありません)そして(b)オリジンでブランチが削除されると、それらの参照は次回私が行うときにローカルで削除されませんgit fetch origin。つまり、パスが終了することを意味しますクラフトアップ。

問題は、どのようにして 1 つのブランチだけをフェッチし、その参照をローカルで更新するのかということです。

4

3 に答える 3

9

私が探しているのはこれだと思います

$ git fetch origin master:refs/remotes/origin/master

「git fetch origin master」とは異なり、参照が更新されるのを実際に見ているので、それはうまくいくようです。

それが間違った答えである理由はありますか?私が恐れるべき何か?

于 2012-12-18T08:14:12.580 に答える
2

コマンドにはいつでも refspec を指定できますgit fetch。特に、更新したい場合はother-branch、次のことができます。

git fetch origin other-branch:other-branch

これにより、origin の現在のヒントが取得refs/heads/other-branchされ、同じ名前のローカル ブランチに配置されます。

別の方法は、先に進んで次のことを行うことです。

git fetch origin other-branch

そして、ローカル ブランチを再作成します。

git branch -l -f other-branch -t origin/other-branch

-l安全機構としてあります。reflog エントリが作成されるため、必要に応じて以前のバージョンに戻すことができます。

于 2012-12-18T08:08:15.803 に答える
1
git fetch origin

これにより、すべてのリモート ブランチが取得され、それらのリモート トラッキング ブランチが更新されます。

これで、次の 2 つのいずれかを実行できます

git checkout other-branch
git merge origin/other-branch
git checkout -

また

git push . origin/other-branch:other-branch

早送りマージになることがわかっている場合は、最後のオプションで問題ありません。

于 2012-12-18T07:15:19.150 に答える