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
マージしています。ご指摘のとおり、リポジトリはリポジトリよりも「はるかに進んでいます」 。したがって、マージの競合が発生します。origin
master
staging
origin
あなたは何も悪いことをしていません。実際、1 つのローカル コピーで複数のリポジトリを追跡することは、git の標準的な操作です (職場では、12 を追跡しています)。
代わりにこれを試してください (繰り返しますが、1 つのリポジトリがstaging
、1 つがorigin
で、両方がmaster
ブランチを使用するとします):
git checkout -b development --track staging/master
これにより、'development' という名前のブランチがローカルでチェックアウトされ、ステージング リポジトリのマスター ブランチを追跡するようにセットアップされます。明示的に指示しない限り、プロダクションのブランチをそれ自体git pull
にマージしようとしないことを知っているので、このブランチで好きなだけ発行できます。master