問題タブ [git-submodules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git は新しいサブモジュールを初期化/同期/更新しません
これが私の.gitmodules
ファイルの内容の一部です:
ただし、.git/config
最初のもののみが含まれます。
2 番目のサブモジュール ( external/pyfacebook
) は、機能ブランチの別の開発者によって追加されました。私は今開発を継承し、機能ブランチをチェックアウトしました。ただし、Git はサブモジュールをプルしません。私はもう試した:
git submodule init
git submodule update
git submodule update --init
git submodule sync
- からすべてのサブモジュール定義を削除し
.git/config
て実行していgit submodule init
ます。既存のサブモジュールをコピーするだけで、新しいサブモジュールは無視されます。 .git/config
手動で実行中の新しいサブモジュール定義を入力しますgit submodule update
。既存のサブモジュールのみが更新されます。
さまざまな組み合わせがありますが、git は単に.git/config
の新しい内容に基づいて更新したり、フォルダーを.gitmodules
作成したり、サブモジュールの内容をプルしたりすることはありません。external/pyfacebook
私は何が欠けていますか?手作業による介入 (手動で にサブモジュール エントリを追加すること.git/config
) は本当に必要ですか? また、その理由は何ですか?
編集:手動介入は機能しません。新しいサブモジュール エントリを手動で追加して.git/config
も、何も起こりません。新しいサブモジュールは無視されます。
git - 別のgitリポジトリの共有依存関係としてgitリポジトリを追加するにはどうすればよいですか?
サブモジュールに似たものが必要ですが、依存関係としてメインリポジトリの外部に存在します。
ここに問題があります:
Gitを(本当に厄介な方法で)CADツール(Cadsoft Eagle)の設計ファイルを管理しようとしていますが、gitサブモジュールを使用して各プロジェクトを管理する方法があるかどうかを判断するのに苦労しています。 CADツールの共有ライブラリへの依存。
私は次のようなフォルダ構造を使用しています:
この場合、各プロジェクトのgitサブモジュールとしてeagle.gitリポジトリを追加することは意味がありません。
ただし、「eagle.git」リポジトリの現在の状態をスナップショットして、ライブラリが将来更新された場合にロールバックして、次の場合に使用されていたライブラリファイルの特定のリビジョンにアクセスできるようにする方法が必要です。 Proj[x]がコミットされました。
理想的には、次のようなものが欲しいです。
次のことができるようになりたい:
〜/eagle/ディレクトリをProj0にチェックインされたリビジョンに自動的にロールバックさせます。
この種の動作を可能にする可能性のあるGitの何かを知っている人はいますか?
git - 共通サブモジュール (マスター ブランチ) への Git commit
submoduleに配置したいくつかの共通コードを持つ2 つ以上のプロジェクト ( ProjectFooおよびProjectBarと呼びましょう) があります。
私の理解では、ProjectFoo内からサブモジュールへの変更をコミットすると、すべてのProjectFooクローンのみが表示できる切り離されたヘッドになります。
これはおそらく、master
ブランチが変更されていないためです。私はおそらく次のようなことをすることができますgit checkout master && git merge Everything up-to-date
が、それはかなり醜いようです。同じことをgit reset --hard master
するかもしれませんが、それはさらに醜いようです。
プロジェクトで共通のコードを共有し、それを使用するプロジェクト内から更新するにはどうすればよいですか? つまり、そのサブモジュールにコミットすると、この同じサブモジュールを使用するさまざまなリポジトリ (クローンだけでなくリポジトリ) がすべて更新されます。
- - 編集 - -
明らかに、チェックアウトしたリポジトリがめちゃくちゃで壊れていました。そのように最初から正しく機能するはずです(この例ではProjectFooで):
次に、 ProjectBarなどの他のプロジェクトからその変更を取得します。
最新の共通コードに更新します。分離ヘッドの場合はAgit checkout master
が必要な場合があります。
git - Symfony と Git の操作 (コラボレーション)
A、B、C の 3 つのアプリケーションを含むプロジェクトがあるとします。私たちのチームは、ジャック、スーザン、マーティンです。そして 1 人のプロジェクト リーダー — デビッド。
各プログラマーは、独自のアプリケーションに取り組んでいます。
A - ジャック
B - スーザン
C - マーティン
そのため、ソースコードの管理に問題があります。Git で効果的に整理するには? いくつかのユースケースがありますが、それらが正しく効果的かどうかはよくわかりません。どうぞ:
- プロジェクト全体で 1 つのレポ。
- A、B、および C アプリの個別のリポジトリ (「アプリ」フォルダー内の適切なディレクトリ内)。
私は2番目のアイデアが本当に好きですが、それが本当に効果的である場合は好きではありません.
あなたは何をし、どのように整理しますか? どんな助けでも大歓迎です。
git - 高度に結合されたgitサブモジュール
2つのリポジトリに分割する必要があるプロジェクトがあります。1つは一般的なモデルのセットで、もう1つはそれらのモデルに基づくシミュレーションと追加のコードです。最終的には、同じモデルセットを使用した複数のシミュレーションが存在する可能性があるため、それらを別々のリポジトリに配置することは明確な要件です。明らかな解決策は、シミュレーションのサブモジュールとして共通モデルを使用することです。
残念ながら、2つのリポジトリは非常に高度に結合されます。人々は非常に頻繁に共通のモデルに何かを追加し、すぐにそれをシミュレーションで使用します。これは、シミュレーションのリポジトリの統合プロセスで多くの頭痛の種になると思います。シミュレーションで多くの開発者からの変更をマージするには、インテグレーターは共通モデルサブモジュールで並列マージを実行する必要があります。一方、サブモジュールを使用することも不可欠です。シミュレーションでは、使用する必要のある一般的なモデルのバージョンを実際に知る必要があります。
このプロジェクトはかなりの数の人々によって行われています。ほとんどの開発者は、gitについて非常に大雑把な知識しか持っていません。ファイルを追加し、コミットし、オリジンからプルします。できれば、開発者と安定したブランチを持っています。インテグレーターは当然、かなり多くのことを学びましたが、サブモジュールを含むものはすべて彼にとって確かに新しいものです。追加ボーナス:私は1か月の休暇を取るところなので、火を消すことができなくなります。結果として、ワークフローを台無しにするのを本当に難しくし、人々の以前のワークフローとの違いを最小限に抑えるための多くのインセンティブがあります。
だから、私の質問は次のとおりです:これにサブモジュールを使用することをお勧めすることを後悔するつもりですか?(もっと良いアイデアはありますか?)人々にどのような間違いを期待できるので、事前に警告することができますか?覚えておくべき良いワークフロー戦略はありますか?
編集:私はちょうどgit slaveに出くわしました、これはこの文脈でも一見の価値があるかもしれません。そのウェブサイトにあるものを超えて能力/制限の良い評価をまだ与えることができません。
git - Gitは既存のリポジトリからスーパープロジェクトにサブモジュールを追加します
ディレクトリにいくつか (約 10 ~ 15) の Git リポジトリがあります。
それぞれに独自の個別のリポジトリとリモート サーバーがあります。
問題は、私がしなければならないすべてのリポジトリからすべての変更をプルすることです:
1 つのコマンドですべてのリポジトリをプルするように Git サブモジュールを設定するにはどうすればよいですか?
または、Windows、Linux、および Mac (3 つのオペレーティング システムすべてを使用しているため) 用のスクリプトを作成して、同じことを効果的に行うこともできます。リポジトリは異なるブランチにある可能性があり、必ずしも追跡ブランチが設定されているとは限らないことに注意してください。
同じメモ:
- パスワードはすべてのリポジトリで同じです
- リモートサーバーは同じリポジトリです(明らかに別のリポジトリ/ディレクトリにあります)
- パスワードを一度だけ入力したい
- すべてのリポジトリをプルするコマンドを 1 つだけ入力したい
- 公開鍵/秘密鍵はオプションではありません
- ssh経由でリモートに接続しています
git - Gitサブモジュールがプルしない
マスタープロジェクトとしてgitリポジトリがあります。いくつかのサブモジュールが追加されています。
ように見えます:
それはすべて大丈夫です、その献身的で機能しています。しかし、スーパープロジェクトをオリジン/マスターにプッシュし、それを別のマシンにクローンすると、サブモジュールはプルされません。
私は試しましたがgit submodule init
、それらはすべて効果がありませんgit submodule update
。git submodule update --init
git - 履歴をマージせずに可能なGitサブツリーマージ戦略?
自己完結型のリポジトリを取得するためにサブモジュールから離れようとしていますが、サブツリーのマージ戦略はこのユースケースに一致しているようです。
ただし、マージされたリポジトリの履歴は、私自身のプロジェクトの履歴に表示されます。これは、かなり面倒です。
すべてのサブツリーのファイルをプロジェクトのルートに書き換えるgit filter-branch --subdirectory-filter path/to/subtree/ HEAD
サブツリーを更新しようとするまで、どちらが機能するか試してみました。git pull -s subtree my-subtree master
これをgitでネイティブに実現する方法はありますか?
git - サブモジュールを含む「gitclone」の方法は?
サブモジュールをリポジトリに入れようとしています。問題は、親リポジトリのクローンを作成すると、サブモジュールフォルダーが完全に空になることです。
git clone parent_repo
実際にサブモジュールフォルダにデータを配置するようにする方法はありますか?
たとえば、 http ://github.com/cwolves/sequelize/tree/master/lib/nodejs-mysql-native
は外部のgitサブモジュールを指していますが、sequelize
プロジェクトをチェックアウトすると、そのフォルダーは空になります。
git - Githubブランチ
私は自分が取り組んでいるプロジェクトを持っており、コードの特定の部分で私を助けるために請負業者を雇っています。問題は、請負業者の誰にもすべてを見せたくないということです。
GitHubに、プライベートリポジトリの下にブランチを割り当てる方法はありますか?これにはコマンドラインが必要ですか、それともWebサイトで実行できますか?