기본적으로 Windows Git에서는 전역 .gitconfig를 c:\documents and settings\user\
.gitconfig가 저장되도록 위치를 어떻게 변경할 수 c:\my_configuration_files\
있습니까?
전혀 할 수 있습니까?
기본적으로 Windows Git에서는 전역 .gitconfig를 c:\documents and settings\user\
.gitconfig가 저장되도록 위치를 어떻게 변경할 수 c:\my_configuration_files\
있습니까?
전혀 할 수 있습니까?
답변:
로 설정 HOME
하면 c:\my_configuration_files\
git이 .gitconfig를 찾습니다. 환경 변수 편집은 여기 에 설명되어 있습니다. . HOME 변수를 설정 한 다음 cmd.exe 창을 다시 열어야합니다. "set"명령을 사용하여 HOME이 실제로 올바른 값을 가리키는 지 확인하십시오.
물론 홈을 변경하면 다른 응용 프로그램에도 영향을 미칩니다. 그러나 git의 소스 코드를 읽으면 명령 줄을 조정할 필요없이 이러한 파일의 위치를 변경할 수있는 유일한 방법 인 것으로 보입니다. Stefan의 응답도 고려해야합니다. GIT_CONFIG 변수를 설정할 수 있습니다. 그러나 원하는 효과를 내 --global
려면 모든 git 호출에 플래그를 전달해야합니다 (및 로컬 .git / config 파일은 무시 됨).
.gitconfig
파일을 해당 디렉토리 로 이동하면 작동하지 않습니다.
이에 대한 홈 디렉토리 변경이 잘못되었습니다. gitconfig에 대한 심볼릭 링크를 HOME 디렉토리에 만드는 것이 더 좋습니다.
$HOME
네트워크 드라이브에 있으며 네트워크 연결에 문제가있을 때마다 링크에 연결할 수 없습니다.
다른 구성 파일에서 작업 한 것과 약간 다른 접근 방식을 사용하여이 문제를 해결했습니다. Git Config 는 다른 위치의 구성 파일을 가리킬 수있는 포함 을 지원합니다 . 그런 다음 대체 위치를 가져 와서 .gitconfig 파일의 일부인 것처럼 제자리에서 확장합니다. 이제 .gitconfig에 단일 항목이 있습니다.
[include]
path = c:\\path\\to\\my.config
Git에서 .gitconfig 파일에 작성한 모든 업데이트는 내 포함 경로를 덮어 쓰지 않습니다. 때때로 값을 .gitconfig에서 my.config로 이동해야 할 수도 있습니다.
git config --file "included.file"
의 파일 및 환경 섹션을 살펴보십시오 git help config
.
나는 Git 마스터는 아니지만 가장 쉽게 작동하는 솔루션을 검색 하는 것은 텍스트 편집기 로 이동하여 C:\Program Files (x86)\Git\etc
여는 것 profile
입니다.
if
37 행에 성명서 가 있습니다 # Set up USER's home directory
. if
성명서를 꺼내서 gitconfig를 원하는 로컬 디렉토리에 넣은 다음 기존 gitconfig 파일 (네트워크 드라이브에 있음)을 해당 위치에 복사했습니다.
나를 위해 (적어도 git-gui의) 시작 위치를 변경해도 .gitconfig를 찾는 위치에는 영향을 미치지 않았습니다. 직장에서의 설정은 U : 우리 집을위한 것이지만 우리는 U :에 직접 쓸 권한이 없습니다. 우리를 위해 만들어진 하위 디렉토리 만 있기 때문에 이것은 저에게 거래를 방해했습니다.
해당 응용 프로그램에 대해서만 HOMEDRIVE 및 HOMEPATH 환경 변수를 재정의하는 배치 스크립트를 만들어 문제를 해결했습니다. 그런 다음 대신 해당 배치 스크립트를 가리 키도록 시작 메뉴 바로 가기를 변경했습니다.
Windows에서 환경 변수를 변경하거나 mklink
권한이 부족하여 문제가있는 경우 문제에 대한 쉬운 해결책은 다른 위치에서 git batch를 시작하는 것입니다.
Git Bash.exe를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 "시작 위치"속성을 c:\my_configuration_files\
.
%HOMEDRIVE%%HOMEPATH%
에서`c : \ my_repo_folder`로 변경 했습니다. 매력을 발휘했습니다.
저도 똑같은 일을하고 싶었습니다. 내가 찾을 수있는 최선은 @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
}
오랫동안 이것에 관심이있는 사람으로서. 설명서에서 참조하십시오.
$ XDG_CONFIG_HOME / git / config- 두 번째 사용자 별 구성 파일입니다. 경우 $XDG_CONFIG_HOME
설정하거나 비어 있지 않은, $ HOME은 /의 .config / 자식 / 설정이 사용됩니다. 이 파일에 설정된 단일 값 변수는 ~ / .gitconfig에있는 항목으로 덮어 씁니다. 이 파일에 대한 지원이 상당히 최근에 추가되었으므로 때때로 이전 버전의 Git을 사용하는 경우이 파일을 생성하지 않는 것이 좋습니다.
최근에야 추가되었습니다. 이 덤프는 2.15.0에서 가져온 것입니다.
나를 위해 작동합니다.
%PROGRAMFILES%\Git\etc
profile
HOME="c:\location_were_you_want_gitconfig"
참고 : 일반적으로 파일 권한은 제한되어 있으므로 적절하게 변경하지 않으면 변경 사항을 저장할 수 없습니다.
git config --list --show-origin
. 원래 HOME이 여전히 제자리에 있음을 보여줍니다.
Windows HOME 변수
OS 를 변경할 필요가없는 솔루션 : Windows 10
git 버전 : 2.27.0.windows.1
휴대용 버전의 Git을 사용하므로 모든 구성 파일이 펜 드라이브 (E :)에 있습니다. 이것은 나를 위해 일한 것입니다.
.gitconfig
다른 bash 파일 을 넣고 싶었 기 때문에 home 이라는 폴더를 만들었습니다 .mkdir home
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 파일의 위치를 성공적으로 변경했음을 보여주기위한 것입니다.