私は中央サーバからクローンされたローカルのgitリポジトリを持っています。ローカルマスタブランチの最後のコミットはコミット1です。git fetchは.git/refs/remotes/origin/masterを更新しません。
セントラルリポジトリには、コミット2という新しいブランチがあります。
ローカル参照番号を更新するためにgit fetch origin master
を実行しましたが、refs/remotes/origin/master
は更新されませんでした。
次に、.git/FETCH_HEAD
を確認しました。しかしこれは、すでにフェッチのために2
私のローカル設定をコミットし、次のとおりです。
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = #########
はまた、私は、中央にログインし、そこに裸のリポジトリをチェックすることができています。
project.git/refs/heads/master
は
です。コミット2
次に、git pull origin master
を実行しようとしました。驚いたことに、コミット2は私のローカルリポジトリにマージされます。
そしてgit diff origin/master
でも間の差分が1をコミットし、をコミット私を示しています。しかし、起源と私のローカルリポジトリは、この時点で同じ内容を持っています。
私の質問は以下のとおりです。
git fetch
は、原点からの最新の更新プログラムをダウンロードしていないのはなぜ?- なぜ
git pull
がこの場合でも動作するのはなぜですか? - ローカル設定またはセントラル設定の問題ですか?
ありがとうございます! git pullはorigin/masterを更新しないのですか?また時々git diff origin/masterが必要なので、diffをチェックする前にgit fetch originを実行する必要があります。 – DustinZhang
'git pull'は単に' git fetch'と 'git merge'または' git rebase'(適切な引数付き)です。 – o11c
また、 'git fetch --all'を実行するのに慣れています。私が現在追跡しているリモートが何であるか心配しなければならないので、他の人が現在取り組んでいるブランチの概要を簡単に知ることができます。 – o11c