0

TortoiseGITを使用しています。1つのローカルフォルダに2つのリモートリポジトリを維持することは可能ですか?マスターリモートリポジトリがあり、ステージングリモートリポジトリがあります。これは常にマスターリポジトリよりもはるかに進んでいます。ローカルリポジトリを作成し、マスターリモートリポジトリからプルしました。次に、新しいブランチを作成し、リモートステージングリポジトリからプルしようとしましたが、1000を超える競合と3000以上の変更されたファイルが表示されます。Tortoise GITを使用してこれに取り組むにはどうすればよいですか?

4

1 に答える 1

0

あなたの問題は単なる誤解ですgit pull。2 つのリモートが と と呼ばれoriginstaging作業を行っているブランチが であるとしますmaster

これで、リモートを追跡するようにmaster設定されましたorigin。それはいいです。しかし、今あなたは発行しています:

git pull staging master

何をしgit pullますか?FETCH_HEAD指定されたブランチをディレクトリにフェッチし、.gitそれを現在のブランチにマージします。それが行うことはこれだけです -- デフォルトのトラッキング ブランチ (コマンドが指定されていない場合) または指定されたブランチ (指定されている場合) で、フェッチに続いてマージが行われます。

ステージング リポジトリのバージョンの を取得し、それをリポジトリの のコピーにmasterマージしています。ご指摘のとおり、リポジトリはリポジトリよりも「はるかに進んでいます」 。したがって、マージの競合が発生します。originmasterstagingorigin

あなたは何も悪いことをしていません。実際、1 つのローカル コピーで複数のリポジトリを追跡することは、git の標準的な操作です (職場では、12 を追跡しています)。

代わりにこれを試してください (繰り返しますが、1 つのリポジトリがstaging、1 つがoriginで、両方がmasterブランチを使用するとします):

git checkout -b development --track staging/master

これにより、'development' という名前のブランチがローカルでチェックアウトされ、ステージング リポジトリのマスター ブランチを追跡するようにセットアップされます。明示的に指示しない限り、プロダクションのブランチをそれ自体git pullにマージしようとしないことを知っているので、このブランチで好きなだけ発行できます。master

于 2012-07-30T03:09:55.160 に答える