Windows에서 .gitconfig 위치 변경


105

기본적으로 Windows Git에서는 전역 .gitconfig를 c:\documents and settings\user\

.gitconfig가 저장되도록 위치를 어떻게 변경할 수 c:\my_configuration_files\있습니까?

전혀 할 수 있습니까?


추가하고 싶었습니다. % userprofile % /. git / .gitignore (폴더에 있음)에 다른 모든 전역 git 구성 항목 ( "exludesfiles"및 "attrirutesfile")이 있지만 .gitconfig가 바로 옆에 있기를 바랍니다. ,하지만 % userprofile % ..의 루트에 있어야합니다. 정말 짜증납니다.
WORMSS

6
질문을받은 이후 진행 상황이 있습니까? 내 .gitconfig는 기본적으로 네트워크 드라이브에 있습니다. 즉, 오프라인 상태에서는 읽을 수 없습니다.
Lech Rzedzicki

답변:


67

로 설정 HOME하면 c:\my_configuration_files\git이 .gitconfig를 찾습니다. 환경 변수 편집은 여기 에 설명되어 있습니다. . HOME 변수를 설정 한 다음 cmd.exe 창을 다시 열어야합니다. "set"명령을 사용하여 HOME이 실제로 올바른 값을 가리키는 지 확인하십시오.

물론 홈을 변경하면 다른 응용 프로그램에도 영향을 미칩니다. 그러나 git의 소스 코드를 읽으면 명령 줄을 조정할 필요없이 이러한 파일의 위치를 ​​변경할 수있는 유일한 방법 인 것으로 보입니다. Stefan의 응답도 고려해야합니다. GIT_CONFIG 변수를 설정할 수 있습니다. 그러나 원하는 효과를 내 --global려면 모든 git 호출에 플래그를 전달해야합니다 (및 로컬 .git / config 파일은 무시 됨).


2
흠, 내가 올바르게 이해했는지 확실하지 않지만 HOME을 변경하지 않으면이를 사용하는 다른 모든 응용 프로그램에도 영향을 미칩니 까? HOME을 변경하는 방법이 없지만 Git에 로컬입니까?
Rook

예, 다른 응용 프로그램에도 영향을 미칩니다. 당신은 위치를 바꾸는 방법을 물었고 내가 당신에게 말했다. 내 편집을 참조하십시오.
Martin v. Löwis 2010 년

10
누군가가 실제로 집을 옮기는 부작용없이 다른 일을 엉망으로 만들지 않았습니까?
Ade Miller

이것은 Windows 플랫폼에서 작동하는 솔루션 일 가능성이 높습니다. 그것은 나에게도 효과적이었습니다. Chocolatey의 refreshenv 스크립트를 사용하여 내가 설정 한 환경 변수 HOME (사용자 환경 변수)을 새로 고쳤습니다. 그 후 원하는 파일 위치를 얻었습니다.
Tore Aurstad

이 작업을 수행하려면 Git을 다시 설치해야했습니다. HOME이라는 새 환경 변수를 추가하고 .gitconfig파일을 해당 디렉토리 로 이동하면 작동하지 않습니다.
Csaba

46

이에 대한 홈 디렉토리 변경이 잘못되었습니다. gitconfig에 대한 심볼릭 링크를 HOME 디렉토리에 만드는 것이 더 좋습니다.

  1. .gitconfig를 사용자 홈 디렉터리에서 원하는 디렉터리로 이동합니다.
  2. 관리자 권한으로 명령 줄 실행
  3. 사용자 홈 디렉토리로 이동
  4. mklink .gitconfig \ PathForNewLocationOfConfig.gitconfig를 입력하십시오.

9
git config --global을 실행하여 구성에 항목을 추가하면 심볼릭 링크가 사용중인 .gitconfig의 실제 복사본으로 덮어 쓰여진다는 점을 추가 할 가치가 있습니다. \ PathForNewLocationOfConfig.gitconfig가 내 Dropbox 폴더 인 위치를 테스트 할 때이 문제가 발생했습니다
MotoWilliams

8
.gitconfig가 네트워크 드라이브에있는 경우이 옵션을 배제하는 "장치가 기호 링크를 지원하지 않습니다"라는 메시지가 표시 될 수 있습니다.
정오,

4
이 솔루션이 누구에게도 효과가 없을 것이라고 생각합니다. 우리 회사에서는 $HOME네트워크 드라이브에 있으며 네트워크 연결에 문제가있을 때마다 링크에 연결할 수 없습니다.
andreee

1
2017 년이 재 방문 @MotoWilliams : 그대로 심볼릭 링크의 숙박을 --global로 편집 한 후

2
여기에서 그룹 경찰 (AD)은 HOMEDRIVE, HOMEPATH 및 HOMESHARE를 설정하지만 평범하고 오래되고 단순한 HOME은 설정하지 않습니다. HOME이 없으면 git은 이전 세 가지 조합을 사용하는 것 같습니다. 그러나 사용자 별 환경 변수를 설정하는 일반적인 방법론을 통해 HOME을 설정하면 작동합니다. GIT는 사용자가 설정 한 HOME 값을 사용하고 grouppolicy는 HOME을 방해하지 않습니다.
David I. McIntosh

29

다른 구성 파일에서 작업 한 것과 약간 다른 접근 방식을 사용하여이 문제를 해결했습니다. Git Config 는 다른 위치의 구성 파일을 가리킬 수있는 포함 을 지원합니다 . 그런 다음 대체 위치를 가져 와서 .gitconfig 파일의 일부인 것처럼 제자리에서 확장합니다. 이제 .gitconfig에 단일 항목이 있습니다.

[include]
   path = c:\\path\\to\\my.config

Git에서 .gitconfig 파일에 작성한 모든 업데이트는 내 포함 경로를 덮어 쓰지 않습니다. 때때로 값을 .gitconfig에서 my.config로 이동해야 할 수도 있습니다.


+1 : 이상한 구성이 없으며 글로벌 gitconfig는 git repo 자체에 저장하는 것이므로 거기에 무엇이 있는지 추적하는 것이 내 일입니다. 전역 변경을 할 때 전역 파일을 직접 편집합니다. 그래서 이것은 나를 위해 완벽하게 작동하고 "HOME"환경 변수를 변경하는 것과 같은 이상한 생각이 필요하지 않습니다. 이것은 당신이 원하는 곳에 Git의 설정을 얻기위한 이상한 아이디어입니다. 결국 홈 디렉토리는 다른 많은 프로그램에 대해 다른 의미를 갖습니다. 또한이 솔루션을 사용하면 다른 ID를 맨 위에 배치하고 ID간에 ​​키 설정을 동일하게 유지할 수 있습니다. 우수한!
user62177541

2
대신 [include] d 파일의 파일에 git config 쓰기가 가능한지 궁금합니다.
조나단 나자 리오

1
@JonathanNazariogit config --file "included.file"
Pero P.


11

나는 Git 마스터는 아니지만 가장 쉽게 작동하는 솔루션을 검색 하는 것은 텍스트 편집기 로 이동하여 C:\Program Files (x86)\Git\etc여는 것 profile입니다.

if37 행에 성명서 가 있습니다 # Set up USER's home directory. if성명서를 꺼내서 gitconfig를 원하는 로컬 디렉토리에 넣은 다음 기존 gitconfig 파일 (네트워크 드라이브에 있음)을 해당 위치에 복사했습니다.


정말 감사합니다. 다른 모든 옵션이 실패했지만 이것은 6 초를 곱한 백만 개의 git 문을 절약했습니다. : D 여기 내가 한 일입니다 ...`HOME = "$ USERPROFILE \ Downloads \ Tools \ Git_Config"`
PravyNandas

2
git 2.24 (2019 년 12 월)에는 'home'이라는 단어 (또는 당신과 비슷한 줄 : 37)가 더 이상 존재하지 않습니다.
Frank Nocke

6

나를 위해 (적어도 git-gui의) 시작 위치를 변경해도 .gitconfig를 찾는 위치에는 영향을 미치지 않았습니다. 직장에서의 설정은 U : 우리 집을위한 것이지만 우리는 U :에 직접 쓸 권한이 없습니다. 우리를 위해 만들어진 하위 디렉토리 만 있기 때문에 이것은 저에게 거래를 방해했습니다.

해당 응용 프로그램에 대해서만 HOMEDRIVE 및 HOMEPATH 환경 변수를 재정의하는 배치 스크립트를 만들어 문제를 해결했습니다. 그런 다음 대신 해당 배치 스크립트를 가리 키도록 시작 메뉴 바로 가기를 변경했습니다.


1
이 문제를 해결하기 위해 수행 한 작업에 대한 자세한 정보를 원합니다.
Matt Casto

솔루션을 공유 할 수 있습니까?
Sal

4

먼저 HOME 설정을 확인한 다음 HOME 및 HOMEDRIVE를 기존 디렉토리로 변경하십시오.

c:\git>set HOME
HOME=U:\
HOMEDRIVE=U:
HOMEPATH=\

그런 다음 HOME 및 HOMEDRIVE를 다음과 같이 변경하십시오.

set HOME=c:\tmp
set HOMEDRIVE=C:

3

Windows에서 환경 변수를 변경하거나 mklink권한이 부족하여 문제가있는 경우 문제에 대한 쉬운 해결책은 다른 위치에서 git batch를 시작하는 것입니다.

Git Bash.exe를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 "시작 위치"속성을 c:\my_configuration_files\.


와우 이것은 완전히 쉽게 작동합니다. 새 바로 가기를 만들고 'properties-> start in' %HOMEDRIVE%%HOMEPATH%에서`c : \ my_repo_folder`로 변경 했습니다. 매력을 발휘했습니다.
Shane

2
이것은 나를 위해 작동하지 않았습니다. .gitconfig 파일은 여전히 내 홈 디렉토리에서로드
데이브 B를

3

저도 똑같은 일을하고 싶었습니다. 내가 찾을 수있는 최선은 @MicTech의 솔루션이었습니다. 그러나 @MotoWilliams가 지적했듯이 이것은 링크를 새 설정만을 포함하는 새 파일로 대체하는 .gitconfig 파일에 대한 Git의 업데이트를 유지하지 않습니다.

다음 PowerShell 스크립트를 작성하고 프로필 시작 스크립트에서 실행하여이 문제를 해결했습니다. 실행될 때마다 사용자의 .gitconfig에 추가 된 모든 설정을 전역 설정에 복사 한 다음 .gitconfig 파일의 모든 텍스트를 전역 파일을 가져 오는 [include] 헤더로 바꿉니다.

다른 많은 전역 스크립트 및 도구와 함께 전역 .gitconfig 파일을 저장소에 보관합니다. 내가해야 할 일은 스크립트가 내 전역 파일에 추가하는 변경 사항을 체크인하는 것뿐입니다.

이것은 나를 위해 꽤 투명하게 작동하는 것 같습니다. 도움이 되었기를 바랍니다.

9 월 9 일 : 구성 파일에 추가 된 새 항목이 중복되는 경우이를 감지하고 무시하도록 업데이트되었습니다. 이것은 기존 업데이트를 찾을 수없고 포함을 따르지 않는 경우 새 업데이트를 작성하는 SourceTree와 같은 도구에 유용합니다.

function git-config-update
{
  $localPath = "$env:USERPROFILE\.gitconfig".replace('\', "\\")
  $globalPath = "C:\src\github\Global\Git\gitconfig".replace('\', "\\")

  $redirectAutoText = "# Generated file. Do not edit!`n[include]`n  path = $globalPath`n`n"
  $localText = get-content $localPath

  $diffs = (compare-object -ref $redirectAutoText.split("`n") -diff ($localText) | 
    measure-object).count

  if ($diffs -eq 0)
  {
    write-output ".gitconfig unchanged."
    return
  }

  $skipLines = 0
  $diffs = (compare-object -ref ($redirectAutoText.split("`n") | 
     select -f 3) -diff ($localText | select -f 3) | measure-object).count
  if ($diffs -eq 0)
  {
    $skipLines = 4
    write-warning "New settings appended to $localPath...`n "
  }
  else
  {
    write-warning "New settings found in $localPath...`n "
  }
  $localLines = (get-content $localPath | select -Skip $skipLines) -join "`n"
  $newSettings = $localLines.Split(@("["), [StringSplitOptions]::RemoveEmptyEntries) | 
    where { ![String]::IsNullOrWhiteSpace($_) } | %{ "[$_".TrimEnd() }

  $globalLines = (get-content  $globalPath) -join "`n"
  $globalSettings =  $globalLines.Split(@("["), [StringSplitOptions]::RemoveEmptyEntries)| 
    where { ![String]::IsNullOrWhiteSpace($_) } | %{ "[$_".TrimEnd() }

  $appendSettings = ($newSettings | %{ $_.Trim() } | 
    where { !($globalSettings -contains $_.Trim()) })
  if ([string]::IsNullOrWhitespace($appendSettings))
  {
    write-output "No new settings found."
  }
  else
  {
    echo $appendSettings
    add-content $globalPath ("`n# Additional settings added from $env:COMPUTERNAME on " + (Get-Date -displayhint date) + "`n" + $appendSettings)
  }
  set-content $localPath $redirectAutoText -force
}

2

오랫동안 이것에 관심이있는 사람으로서. 설명서에서 참조하십시오.

$ XDG_CONFIG_HOME / git / config- 두 번째 사용자 별 구성 파일입니다. 경우 $XDG_CONFIG_HOME설정하거나 비어 있지 않은, $ HOME은 /의 .config / 자식 / 설정이 사용됩니다. 이 파일에 설정된 단일 값 변수는 ~ / .gitconfig에있는 항목으로 덮어 씁니다. 이 파일에 대한 지원이 상당히 최근에 추가되었으므로 때때로 이전 버전의 Git을 사용하는 경우이 파일을 생성하지 않는 것이 좋습니다.

최근에야 추가되었습니다. 이 덤프는 2.15.0에서 가져온 것입니다.

나를 위해 작동합니다.


이것은 Windows에서 가장 간단하고 방해가 적으며 가장 안정적인 솔루션입니다.
kwill

2
  1. 폴더로 변경 %PROGRAMFILES%\Git\etc
  2. 파일 수정 profile
  3. 첫 번째 줄에 추가 HOME="c:\location_were_you_want_gitconfig"
  4. 끝난

참고 : 일반적으로 파일 권한은 제한되어 있으므로 적절하게 변경하지 않으면 변경 사항을 저장할 수 없습니다.


이것은 git 2.24, Win10, 2019 년 12 월 현재 작동하지 않습니다 git config --list --show-origin. 원래 HOME이 여전히 제자리에 있음을 보여줍니다.
Frank Nocke

1

나를 위해 그것은 매우 간단하게 작동했습니다.

  1. ".gitconfig"를 이전 디렉토리에서 % USERPROFILE %로 복사합니다 ( "c : \ users \ username"의 표준).
  2. GITGUI 및 GITBASH의 시작 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "실행 위치": "% HOMEDRIVE %% HOMEPATH %"를 "% USERPROFILE %"로 변경합니다. 당연히 "% USERPROFILE %"대신 다른 디렉토리를 사용할 수 있습니다.

스크린 샷 전에

스크린 샷


0

Windows HOME 변수
OS 를 변경할 필요가없는 솔루션 : Windows 10
git 버전 : 2.27.0.windows.1

휴대용 버전의 Git을 사용하므로 모든 구성 파일이 펜 드라이브 (E :)에 있습니다. 이것은 나를 위해 일한 것입니다.

  1. https://git-scm.com/ 에서 휴대용 Git을 다운로드합니다 . 파일을 실행하고 필요한 위치에 설치하십시오. E : \ git 에 설치했습니다 . .
  2. E : \ git 에서 git-bash.exe 를 실행합니다 .
  3. E에.gitconfig 다른 bash 파일 을 넣고 싶었 기 때문에 home 이라는 폴더를 만들었습니다 .
    mkdir home
  4. etc 폴더로 이동하여 profile 이라는 파일을 엽니 다 (제 경우에는 E : \ git \ etc \ profile).
  5. 프로필 파일 끝에 우리가 만든 디렉터리 (또는 .gitconfig 파일을 저장할 디렉터리)의 절대 경로를 추가 합니다.
    HOME="E:\git\home"

이제 더 이상 C : \ Users <username> 디렉토리에서 .gitconfig를 검색하지 않고 위의 설정된 경로 만 찾습니다.

$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory

아직 .gitconfig 파일이 없기 때문에 오류가 발생했습니다. 이것은 Windows에서 HOME 디렉토리를 변경하지 않고 .gitconfig 파일의 위치를 ​​성공적으로 변경했음을 보여주기위한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.