3

リモート リポジトリの 2 つのチェックアウトが存在するとします。最初のローカル リポジトリから eGit でコミット/プッシュを実行し、次に 2 番目のローカル リポジトリからプルを実行すると、eGit はプルされているコミットを確認するダイアログを表示しますが、エディターでは、変更されたファイルの内容が更新されません。

私の理解では、git pull もマージを行うため、作業ディレクトリ内のファイルを更新する必要があります。これは間違っていますか?ファイルのコンテンツを更新するには、Eclipse eGit でどのような追加手順が必要ですか。

4

1 に答える 1

1

これは、2 番目のローカル リポジトリでのリモート トラッキングの設定ミスが原因であると考えたため、この質問は無効であると判断しました。それを修正した後、期待どおりにプル後にファイルの内容が更新されます。ご意見をお寄せいただきありがとうございます。

ただし、フェッチ/プッシュの仕様は両側で問題ありませんでした。リモート トラッキングは正しくありませんでした。つまり、セクションの .git/config で、2 番目のローカル リポジトリの仕様[branch "my_branch"]が間違っていたmergeため、期待したローカル ブランチとプルがマージされませんでした。 .


問題と修正に関するいくつかの詳細: 私が言ったように、フェッチとプッシュの仕様は問題ありませんでしたが、2 台目のマシンでローカル ブランチとその追跡をセットアップしたので、間違いを犯したに違いありません。最初のマシンの場合は正しかった。.git/config見た中で

[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "1.3.0"]
        remote = origin
        merge = refs/heads/1.3.0
[branch "1.3.0-devel"]
        remote = origin
        merge = refs/heads/1.3.0-devel

ただし、2台目のマシンでは、ブランチを作成して追跡を設定するコマンドを間違って入力した可能性があるためgit branch -t my_branch_1 origin/my_branch_1、同じ名前のリモートブランチを追跡したい多くのブランチに対して繰り返したところ、ブランチ名が一致しなかったため、結局このような設定で

[branch "master"]
        remote = origin
        merge = refs/heads/1.3.0-devel
[branch "1.3.0"]
        remote = origin
        merge = refs/heads/master
[branch "1.3.0-devel"]
        remote = origin
        merge = refs/heads/1.3.0

質問で言及したトランザクションは、1.3.0-devel ブランチで発生しました。最初のマシンから origin/1.3.0-devel にコミットしてプッシュしましたが、2 番目のマシンでは 1.3.0-devel が origin/ を追跡しなかったためです。 1.3.0-devel、pull は、現在チェックアウトされている 1.3.0-devel ローカル ブランチとマージされませんでした。

コマンドを発行し、git branch --set-upstream 1.3.0-devel origin/1.3.0-devel他のすべてのブランチに対してこれを繰り返すことで、これを修正しました。(注、これは git バージョン 1.7.x 用です。1.8.x の場合は異なります)

于 2013-03-04T13:14:24.520 に答える