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.