2011-12-16 11 views
1

Nサブモジュールを持つスーパープロジェクトがあります。 Git Submodule Tutorialサブモジュールを使用したGit分散ワークフロー

私はすべてのサブモジュールの公開リポジトリとスーパープロジェクトのパブリックリポジトリを持っています。これはすべてリモートホストのmachine1/path/to/public/repos.gitです。これらは私の公開リポジトリと呼ぶことにする。

ここで、ユーザーXは自分のパブリックリポジトリからスーパープロジェクトをクローンし、すべてを自分のプライベートレポにプルします。彼のローカル.git/config.gitmodulesのすべての参照は私の公開reposを指しています。 Git Distributed Workflows

この方法でユーザXと私は、私たち自身の公開リポジトリに地元の変更をプッシュすることができ、その後から変更をプル:

は、私たちは、分散ここで説明したワークフローを使用できるように、ユーザXが自分の公開リポジトリを持ちたいですお互いの公開レポ私は、同じ公開リポジトリにプッシュする必要はありません。

Xのローカルリポジトリの.gitmodulesは私のpublic reposを指しているので、Xはulrを変更してパブリックreposを指すようにする必要があります。 .gitmodulesはコミットされているので、Xがコミットすると、&は公開リポジトリを参照するように変更した後に.gitmodulesを公開し、公開リポジトリから変更を取ります(私のローカル.gitmodulesは彼の公開を参照します)私の代わりにレポが必要な結果ではない)。

だから、あなたは最高の選択肢であるものだと思います:

  • リポジトリのツリーから.gitmodulesを取り外し、それはもはや追跡されていないので.gitignoreに追加します。
  • .gitmodulesをステージングしないでください。なぜ私は悪い考えであるかわかりません。
  • 使用git --update-index assume-unchanged .gitmodules

これらのオプションのいずれかが1のgit cleanを実行したり、すべての人跡未踏のファイルを破棄した場合.gitmodulesが一掃されるという欠点を持っています。

Xの.gitmodulesの変更を自分のパブリックリポジトリを恒久的に参照し、誤って設定を消去したり、不要な変更を取り込んだりする心配はありません。

答えて

1

あなたはサブマウルに追加のリモコンを追加することでこれを達成できます。また、インクルードするリポジトリからのgitサブモジュールのリモートURLは、-initオプションを追加したときにのみ同期されます。何もgitサブモジュールを追加、更新、初期化してから、そのリモートのリポジトリ内のURLを変更することを止めていません。それ以降のサブモジュールの更新では、--initオプションを追加しない限り、そのURLは変更されません。

+0

申し訳ありませんが、私は最初にそれを読んでいる瞬間にこの答えを受け入れるには長い時間がかかりました。理解できませんでした。 –

関連する問題