7

次のような .gitignore ファイルがあります。

.*
!.gitignore

そして、.git/config ファイルを実行すると自動的に更新されるように、.git/configファイルをバージョン管理したいと思います。git pull

これどうやってするの?

私は次のようなものを試しました:

.*
!.gitignore
!.git/config

しかし、これはうまくいきませんでした。リンク ( ln -s .git/config configurations/git/config) を作成すれば、それをバージョン管理できることはわかっていますが、元のリンクを自動的に更新するためのより良い方法が必要です。

それへのハード リンクを作成することを考えています ( ln .git/config configurations/git/config configuration/git) が、最善の方法ではないようです。これを回避する方法はありますか?ハードリンクのバージョン管理時に Git は適切に機能しますか?

編集:これを行う理由を説明する

これを行う主な動機は、私のユーザーのホーム フォルダーをバージョン管理したいということです。このバージョニングを使用して、ある種のデプロイを支援します。すべてのクローンの同期を維持したいと考えています。私がうまく管理しないと衝突が発生するので、私が対処します。たぶん、別の保護されたgitファイルもバージョン管理するでしょう。

4

4 に答える 4

3

@Tuxdude が述べているように、.git/configそれ自体を共有するのは悪い情報です。

しかし、Git (1.7.10+) は構成インクルージョンをサポートするようになりました!

したがって、重要なオプションについては、それらをファイルに配置すると言ったかもしれません:.git.config/repository.configそして、.git/configそれへのリンクを配置するだけです:

[include]
        path = ../.git.config/repository.config

レポのreadmeファイルにそのような推奨事項を追加するだけです。多くの行をコピーして貼り付けるだけで、通常のファイルのような重要な設定をバージョン管理するのは非常に簡単です。また、リポジトリのすべてのユーザーの更新を転送します。

于 2019-01-15T12:09:32.363 に答える
1

.git/configファイルをバージョン管理するのは悪い考えです。

git では、.gitディレクトリの内容は.gitリポジトリに対してローカルであり、2 人が同じリモート URL からクローンを作成しているため、ディレクトリの下にバージョンを作成することはできません.git

たとえば、あなたは 1 つのリモートに名前originを付けているだけで、別の開発者はリモートに次のような名前を付けている場合がありfooます。別の開発者はbar、 とという名前の 2 つのリモートを持っているかもしれませんbaz

リモート (URL、refspec など)、ローカル ブランチ (上流の追跡ブランチなど) に関する情報は、.git/configファイルに保存されます。

一部の構成を本当にオーバーライドする必要がある場合は、.git/configファイルをローカルで編集するか、グローバルに設定できるオプションの場合は、~/.gitconfigまたは同等のものを使用します。

于 2013-04-24T23:56:50.740 に答える
0

すでに優れた回答に追加し、実際に OP の質問に回答するには:

それへのハード リンクを作成することを考えています ( ln .git/config configurations/git/config configuration/git) が、最善の方法ではないようです。
これを回避する方法はありますか?
ハードリンクのバージョン管理時に Git は適切に機能しますか?

いいえ:

  • ハード リンクは Git では表されません。「Git とハード リンク」を参照してください。
  • シンボリック リンクは、リンクされたファイルのパスを含むテキスト ファイルとして単純に保存されます。
于 2013-04-25T11:28:08.787 に答える