.gitconfigにファイルを含めることは可能ですか


245

私のgithub設定を持つ.gitconfigにファイルを含めたいのですが、これは可能ですか?

次のようなことができますか?

[core]
    include = /path/to/file

3
「そこにgithubの詳細を含めたくないので、どういうわけか外部ファイルからそれらを含めたいのです」:これがまさにグローバル構成ファイルの目的です。あなたのケースでそれを使用しない理由はありますか?
VonC、2009年

11
はい、私は.gitconfigをgitリポジトリに公開したいのですが、誰かが私のgithub資格情報を盗んでほしくないので。
David Reynolds、

定期的なgitconfigファイルはgithubのに公開されますが、私はあなたに従わないことなく、任意のgithubの設定。どうして?これらはグローバル構成ファイル(~/.gitconfig)にあるため、つまりgithubリポジトリにプッシュさないためです。「git config」と入力すると、3つの構成ファイル(repo、global、system)が連結されて表示されます。リポジトリ設定ファイルのみがプッシュされます。他の2つはローカルのままです。
VonC、2009年

90
誰もがこの質問の要点を逃したようです。Davidは明らかに、.gitconfigを含め、すべてのドットファイル(bashrc、gemrcなど)のリポジトリをプッシュして、すべてのマシンですべての設定を行えるようにしたいと考えています。プライベートエントリを含めたり無視したりすることで.gitconfigファイルの一部をプッシュする方法は、彼(および私)が後のことです
Bo Jeanes

5
@bjeanes:正確に!私はまだそれを行う方法を見つけていません。
デビッドレイノルズ

回答:


302

Git(1.7.10+)は次の構文をサポートしています.gitconfig

[include]
    path = /path/to/file

gitの変更とそのエッジケースの詳細については、こちらをご覧ください。

ところで、指摘する価値のある微妙な点がいくつかあります。

  1. など、環境変数の拡張$HOMEはサポートされていません。(~Git 1.7.10.2 で登場したの拡張)

  2. 相対パスが指定されている場合は、[include]ステートメントを含む.gitconfigファイルからの相対パスです。これはチェーンされたインクルード全体でも正しく機能し~/.gitconfigます。

    [include]
        path = subdir/gitconfig
    

    そしてsubdir/gitconfig持つことができます:

    [include]
        path = nested_subdir/gitconfig
    

    ... subdir/nested_subdir/gitconfigロードされます。

  3. gitがターゲットファイルを見つけられない場合、黙ってエラーを無視します。これは仕様によるもののようです。


7
実際には必要ありません~。あなたの.gitconfigファイルがまだに存在しなければならないので、これは~/.gitconfig暗示する設定で相対パス~...
robustus

2
~/の$HOME拡大はのよう実際にあるgit describe --contains 4c0a89fc> - v1.7.10.2~12^2(すなわちv1.7.10.2、Debianの7とUbuntu素量がでリリースするようだと、それ以降)注目に値しますv1.7.10.4
FauxFaux 2012

1
これはグロブをサポートしていますか?例パス=〜/ gitconfig.d / *?
Bret

1
@Bretいいえ、これはグロブをサポートしていません。
Mike Morearty、2015

8
構成はこの方法は、特定のファイルが与えられたとき(と、あるものは表示されません含まれていること注--global--localまたは--fileで明示的に言われていない限り、) --includes(のようなgit config --global --includes --list)。
フランクリンユー

16

2012年更新:

Mike Morearty回答をご覧ください。

含む

特殊include.path変数を含めるファイルの名前に設定することで、1つの構成ファイルを別の構成ファイルから組み込むことができます。
インクルードディレクティブの場所でそのコンテンツが見つかったかのように、インクルードファイルはすぐに展開されます。変数
の値がinclude.path相対パスの場合、パスは、includeディレクティブが見つかった構成ファイルからの相対パスと見なされます。
値は、include.pathチルダ展開の対象となります~/の値に展開さ$HOMEれ、~user/指定したユーザのホームディレクトリに。


そうは思わない。

その設定をファイルに入れたい~/.gitconfig

ユーザー固有の構成ファイル。「グローバル」構成ファイルとも呼ばれます。

これにより、GitHubにプッシュされたときに公開されずに、.gitconfigプロジェクト固有のファイルが完成します。グローバル設定ファイルの詳細については、このSO回答も参照してください。
Gitには3つの構成ファイルがあります


bjeanesがコメントに追加します:

誰もがこの質問の要点を逃したようです。
Davidは明らかbashrcgemrc、自分の.gitconfigすべての設定を自分のすべてのマシンで使用できるように、自分のドットファイル(、など)のすべてのドットファイルのリポジトリをプッシュしたいと考えています。プライベートエントリを含めたり無視したり
することで.gitconfigファイルの一部をプッシュする方法は、彼(そして私についても)が求めていることです。

可能な方法は、smudge / cleanフィルタードライバーを使用して、プライベートな機密情報(このスレッドを参照)で1つのファイルを復号化/暗号化し、〜/ .gitconfigのようなローカルファイルを、それに関連する復号化された部分で完成させることですファイル。

そうすれば、すべてのドットファイルを含むGitリポジトリに加えて、解読してドットファイルに追加するための暗号化された情報を含む1つのファイルを作成できます。

代替テキスト

.gitattributes(または.git/info/a..)使用:

myPrivateInfosFile filter=gpg diff=gpg

リポジトリの.configファイルで:

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt

(もちろん、GPGベースのソリューションとは、この特別なリポジトリを複製してすべてのドットファイルを復元する宛先コンピューターに、別の方法で秘密鍵/公開鍵を伝達したことを意味します)

実際には、あなたの場合、スマッジスクリプトは必要に応じて完了する必要があります。そのファイルを復号化した後、関連する部分をグローバル~/.gitconfigファイルに追加します(グローバル構成ファイルを別の場所で上書きしない限り)またはそのための他のドットファイル。案件。

https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread(gpgの 不便さはこのスレッドでさらに説明されています)(これは、ここで説明されているように、完全に暗号化されたGitリポジトリを持つこととは異なります


5
基本的な.gitconfigファイルをgitリポジトリに公開したいのですが、そこにgithubの詳細を含めたくないので、どういうわけか外部ファイルからそれらを含めたいのです。
David Reynolds、

10

コマンドラインから読み込むことができます:

$ git config --local include.path "/path/to/.gitconfig"

"$PWD"/.gitconfig現在のディレクトリからファイルをロードする場合は、代わりに使用してください。

上記のコマンドを実行すると、次の行が.git/configファイルに追加されます。

[include]
        path = /path/to/.gitconfig

2

defunktのハブツールを使用してこれを達成できると思います 。これはgitコマンドのラッパーであり、特にGITHUB_USERGITHUB_TOKEN環境変数を持つことができます。ローカル.gitconfigファイルの設定を上書きします。

次に、シームレスにするためalias git=hubに、ZSH設定でエイリアスを指定したユーザーをエイリアス化します。これで、環境変数を設定したローカルファイルをソースにして、すべての個人情報をそのままにリポジトリをパブリックワールドにプッシュできるはずです。

** OSXを使用している自作ユーザーの場合は、からツールをインストールできますbrew install hub

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.