web-dev-qa-db-ja.com

WindowsでのGit 2.13条件付き構成

Gitバージョン: 2.13.0.windows.1

OS: Windows 7

CLI: Git bash

。gitconfig

[user]
    name = Gyandeep Singh
    email = [email protected]
[Push]
    default = current
[core]
    autocrlf = input
[includeIf "gitdir: ~/Documents/webstorm/corporate/"]
    path = .gitconfig-work

。gitconfig-work

[user]
    name = Gyandeep Singh
    email = [email protected]
  • 上記の両方の設定ファイルは、同じディレクトリ(ホーム)に一緒に置かれます。

発生したこと:企業フォルダー内のフォルダー(テスト例)でCLIを開き、git config user.emailを実行します。出力は[email protected]です。

予想:結果は[email protected]である必要があります。

私は何か間違ったことをしていますか、それとも私の期待は正しくありませんか?私はgit docsに従いました。

解決

Git初期化ディレクトリでgit config --show-Origin --get user.emailを実行する必要があります。 gitが初期化されていない場合、includeIf gitdir機能は動作しません。

その奇妙ですが本当です。それがまだ機能することを願っています。

19
Gyandeep

グローバルC:/Users/<user-name>/.gitconfigには、これが必要ですincludeIf

[includeIf "gitdir:C:/Users/<user-name>/Documents/webstorm/corporate/"]
    path = .gitconfig-work

C:/Users/<user-name>/Documents/webstorm/corporateに作業Gitリポジトリがあり、conditional作業構成はC:/Users/<user-name>/.gitconfig-workに配置する必要があります。

それは少なくともWindowのcmdCmderで機能しています。 git config --show-Origin --get user.emailは、構成値がロード/解決される場所を示します。

また、conditional作業構成は、Gitリポジトリ内から発行された場合にのみ使用されるようです。

C:\Users\<user-name>\Documents\webstorm\corporate
λ git config --show-Origin --get user.email
file:C:/Users/<user-name>/.gitconfig  [email protected]

C:\Users\<user-name>\Documents\webstorm\corporate\some-repo
λ git config --show-Origin --get user.email
file:C:/Users/<user-name>/.gitconfig-work  [email protected]

C:\Users\<user-name>\Documents\webstorm\corporate\some-non-repo-dir
λ git config --show-Origin --get user.email
file:C:/Users/<user-name>/.gitconfig  [email protected]
26
raphaelstolt

受け入れられた回答は参考になりますが、質問には回答しません。

これを書いている時点では、includeIfはgit初期化フォルダー内でのみ機能します。

したがって、「〜/ Documents/webstorm/corporate/somegitproject」にcdしてコマンドを実行すると、出力は期待どおりになります。

$ cd ~/Documents/webstorm/corporate/somegitproject
$ git config user.email
[email protected]

ユーザーはこれが「〜/ Documents/webstorm/corporate /」でも同様に機能することを期待しているため、これはおそらくgitに対する欠陥です。

9
rouble

大文字と小文字の区別をオフにする必要があります:変更"gitdir:"から"gitdir/i:"

[includeIf "gitdir/i:C:/Work/"]
path = .gitconfig-work

[includeIf "gitdir/i:C:/My/Dev/"]
path = .gitconfig-my

から:

https://github.com/Microsoft/vscode/issues/62921#issuecomment-43769302

5
Pawel Cioch

ここにタイプミスがあります:

[includeIf "gitdir: ~/Documents/webstorm/corporate/"]
path = .gitconfig-work

gitdir:の後にスペースを入れないでください:

[includeIf "gitdir:~/Documents/webstorm/corporate/"]
path = .gitconfig-work

それを削除すると、初期化されたGitリポジトリ内の動作が修正されます。

これにより、Git構成全体と、Git構成ファイルの内容が表示されます。

git config --list --show-Origin

警告:これをGitリポジトリ内で実行すると、。gitconfig-workの値が表示されますが、〜/ Documents/webstorm/corporate /内の場合は表示されません、ただしGitリポジトリの外部。

2
Alain O'Dea