101

1 つのディレクトリに 2 つの git リポジトリを配置することは可能ですか? ないと思いますが、聞いてみようと思いました。基本的に、作業しているすべてのマシンで共通のホーム ディレクトリ構成ファイル (.emacs など) をチェックインしたいのですが、ローカル ファイル (.emacs.local など) 用の 2 つ目のリポジトリが必要です。マシン固有の構成。私が考えることができる唯一の方法は、ローカル構成をサブディレクトリに置き、メインの git リポジトリからそのサブディレクトリを無視することです。他のアイデアはありますか?

4

10 に答える 10

43

あなたが何をしているのか理解できれば、マシンごとに別々のブランチを使用し、共通のホーム ディレクトリ構成ファイルを含むブランチを使用して、1 つのリポジトリですべてを処理できます。

リポジトリを初期化し、共通ファイルをリポジトリにコミットします。おそらく、MASTER ブランチの名前を Common に変更します。次に、使用するマシンごとにそこから別のブランチを作成し、マシン固有のファイルをそのブランチにコミットします。共通ファイルを変更するたびに、共通ブランチを各マシン ブランチにマージし、他のマシンにプッシュします (多数ある場合は、そのためのスクリプトを作成します)。

次に、各マシンで、そのマシンのブランチをチェックアウトします。これには、共通の構成ファイルも含まれます。

于 2009-01-13T04:24:06.357 に答える
16

git submoduleを見てください。

サブモジュールを使用すると、ソース ツリーの専用サブディレクトリ内に外部リポジトリを埋め込むことができ、常に特定のコミットを指します。

于 2009-01-12T17:05:39.937 に答える
6

変数を使用することで可能ですGIT_DIRが、何をしているのかわからない場合は、多くの注意事項があります。

于 2010-08-23T14:06:03.483 に答える
6

RichiH はvcshというツールを作成しました。このツールは、git の偽の裸のリポジトリを使用してドットファイルを管理し、複数の作業ディレクトリを $HOME に配置するツールです。csh AFAIK とは何の関係もありません。

ただし、複数のディレクトリがある場合、git-submodules (これは最善の状況では苦痛であり、この使用例は最善の状況ではありません) の代替手段はgitslaveです。常にブランチを作成し、サブレポを変更するための 3 ステップのプロセスを必要としません (正しいブランチにチェックアウトし、変更を加えてコミットし、スーパープロジェクトに移動して、新しいサブモジュールのコミットをコミットします)。

于 2012-03-15T16:16:54.450 に答える