TortoiseGITを使用しています。1つのローカルフォルダに2つのリモートリポジトリを維持することは可能ですか?マスターリモートリポジトリがあり、ステージングリモートリポジトリがあります。これは常にマスターリポジトリよりもはるかに進んでいます。ローカルリポジトリを作成し、マスターリモートリポジトリからプルしました。次に、新しいブランチを作成し、リモートステージングリポジトリからプルしようとしましたが、1000を超える競合と3000以上の変更されたファイルが表示されます。Tortoise GITを使用してこれに取り組むにはどうすればよいですか?
1 に答える
あなたの問題は単なる誤解ですgit pull。2 つのリモートが と と呼ばれorigin、staging作業を行っているブランチが であるとします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