0

directoryA介して作成したサブディレクトリを含むがありますgit clone

のgitリポジトリを作成したいと思いますdirectoryA
しかし、私がgit add -A && git commit -m "w"何もしないと、何もコミットされません。

対処するために特別な注意を払う必要がありgit-cloned subdirectoriesますか?

directoryAプロジェクトで使用するライブラリのコレクション用の特別なディレクトリです。

4

2 に答える 2

0

一般に、gitあるgitリポジトリを別のサブディレクトリに置くことはできません。

このルールの唯一の例外は、gitサブモジュールを使用することです。ただし、これには他にも多くの影響があり、気に入らない場合があります。たとえば、親gitリポジトリは、特定のコミットIDサブモジュールをチェックアウトする必要がある場所を追跡する必要があります。新しいものをサブモジュールにコミットする場合(ローカルまたは外部からプルする場合)、親リポジトリの状態を変更し、サブモジュールの状態を反映するためにもう1つのコミットを作成する必要があります。

これらの問題を解決するために、Androidプロジェクトは、これらの問題に対処する別の方法を作成しました。つまり、を作成しましrepoた。主にrepoAndroidプロジェクトで使用されますが、他の目的に使用できる非常に一般的なメカニズムです。

repoマニフェストと呼ばれるXMLファイルに依存しています(それは独自の小さなgitリポジトリにあります)。マニフェストは、プロジェクト全体を定義するすべてのgitリポジトリがチェックアウトされる場所と、どのリビジョンおよびブランチであるかを定義します。非常に強力なメカニズムです。リポジトリの唯一の制限は、シンボリックリンクを使用する必要があるためWindowsをサポートしないことです(ただし、LinuxとMacは非常によくサポートされています)。

于 2012-12-28T09:25:43.780 に答える
0

作成しているのは初期化されていないサブモジュールです。そうです、サブモジュールを効果的に使用するには、少し特別な処理が必要です。

サブモジュールが初期化されると、それが存在するサブディレクトリを親プロジェクトからコミットできるようになります。

サブモジュールは、基本的なgitを超えて、もう少し学習曲線がありますが、一度理解すると、その目的を十分に果たし、残りのgitとうまく融合します。

サブモジュールの処理を特別なものにしているものは、いくつかの重要な概念に要約できます。

  • サブモジュールは、親リポジトリがサブモジュールを認識する前に初期化する必要があります。
  • サブモジュールは、特に複製、更新、およびコミットする必要がありますが、これの一部を自動化するコマンドオプションがあります。
  • サブモジュールは、単一のコミットがチェックアウトされた完全なリポジトリです。そのため、ヘッドレスであり、加えられた変更をコミットする前にブランチを作成する必要があります。
  • 親リポジトリへの変更の前に、サブモジュールへの変更を最初にチェックインする必要があります。サブモジュールの親の更新は、実際には、親が知っているサブモジュールのコミットの更新です。

サブモジュールに突入する必要があったときに非常に役立ったリンクをいくつか示します。これは、プロジェクトのさまざまな部分を追跡するのに非常に役立ちました。

Gitツール-サブモジュール

Gitサブモジュール:追加、使用、削除、更新

Gitサブモジュールを理解する

于 2012-12-28T15:31:21.127 に答える