За замовчуванням у 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\
, то мерзотник буде знайти .gitconfig там. Тут описано змінні середовища змін . Потрібно встановити змінну HOME, після чого знову відкрити будь-яке вікно cmd.exe. Використовуйте команду "set", щоб переконатися, що HOME дійсно вказує на потрібне значення.
Зміна HOME, звичайно, вплине і на інші програми. Однак, читаючи вихідний код git, це видається єдиним способом змінити розташування цих файлів без необхідності коригування командного рядка. Ви також повинні врахувати відповідь Стефана: ви можете встановити змінну GIT_CONFIG. Однак, щоб отримати --global
бажаний ефект, вам потрібно передати прапор усім викликам git (плюс будь-які локальні .git / config-файли ігноруються).
.gitconfig
файл у цю каталог, він не працював.
Змінити каталог HOME, оскільки це неправильно. Краще створити символічне посилання для gitconfig до каталогу HOME.
$HOME
працює на мережевому накопичувачі, і коли є якісь проблеми з мережевим підключенням, також посилання недоступне.
Я вирішив цю проблему, використовуючи дещо інший підхід, який я бачив як для інших файлів конфігурації. Git Config підтримує включає в себе , що дозволяє вказати в конфігураційний файл в іншому місці. Це альтернативне місце потім імпортується та розширюється на місці так, ніби воно було частиною файлу .gitconfig. Отже, зараз у мене є лише один запис у .gitconfig:
[include]
path = c:\\path\\to\\my.config
Будь-які оновлення, написані Git у файлі .gitconfig, не замінять мій шлях включення. Це означає, що інколи мені може знадобитися переміщення значень з .gitconfig в my.config.
git config --file "included.file"
Подивіться в FILES і СЕРЕДОВИЩІ секції git help config
.
Я не майстер Git, але шукати рішення, яке працювало для мене найлегше, було просто зайти C:\Program Files (x86)\Git\etc
і відкрити profile
текстовий редактор.
Звертається if
заява на рядок 37 # Set up USER's home directory
. Я вийняв if
заяву і помістив у локальний каталог, що я хочу, щоб він був gitconfig, а потім просто скопіював свій існуючий файл gitconfig (був на мережевому диску) до цього місця.
Для мене зміна місця розташування Start In (принаймні, git-gui) не вплинула на те, де воно шукало .gitconfig. Моє налаштування на роботі встановлюється U: для нашого будинку, але ми не маємо дозволу писати в U: безпосередньо, лише підкаталоги, які були створені для нас всередині, тому це було для мене вимикачем угод.
Я вирішив проблему, створивши пакетний скрипт, який би замінив змінні HOMEDRIVE та HOMEPATH env саме для цієї програми. Потім змінив ярлик меню "Пуск", щоб вказати на цей пакетний сценарій.
Якщо ви перебуваєте у вікні та маєте проблеми або зі зміною змінних оточуючих, або mklink
через недостатню кількість привілеїв, простим рішенням вашої проблеми є запуск пакетів git в іншому місці.
Клацніть правою кнопкою миші на Git Bash.exe, натисніть властивості та змініть властивість "Почати в" на c:\my_configuration_files\
.
%HOMEDRIVE%%HOMEPATH%
ярлик і в розділі "Properties-> start in" змінено на `c: \ my_repo_folder`. Працював принадністю.
Я хотів зробити те саме. Найкраще, що я міг знайти, це рішення @ MicTech. Однак, як зазначає @MotoWilliams, це не пережило жодних оновлень, внесених Git до файлу .gitconfig, який замінює посилання на новий файл, що містить лише нові налаштування.
Я вирішив це, написавши наступний скрипт PowerShell і запустивши його в сценарій запуску мого профілю. Кожен раз, коли він запускається, він копіює будь-які параметри, які були додані до .gitconfig користувача у глобальний, а потім замінює весь текст у файлі .gitconfig на заголовок та [include], який імпортує глобальний файл.
Я зберігаю глобальний файл .gitconfig у репортажі, а також безліч інших глобальних сценаріїв та інструментів. Все, що мені потрібно зробити, це пам’ятати, щоб перевірити будь-які зміни, які сценарій додає до мого глобального файлу.
Здається, це працює для мене досить прозоро. Сподіваюся, це допомагає!
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 / git / config. Будь-яка однозначна змінна, встановлена в цьому файлі, буде перезаписана всім, що є в ~ / .gitconfig. Не рекомендується створювати цей файл, якщо іноді використовуєте старіші версії Git, оскільки підтримка цього файлу була додана зовсім недавно.
Що було недавно додано. Цей дамп становить від 2.15.0.
Працює для мене.
%PROGRAMFILES%\Git\etc
profile
HOME="c:\location_were_you_want_gitconfig"
Примітка . Дозволи на файли зазвичай обмежені, тому змініть їх відповідно, інакше ви не зможете зберегти свої зміни.
git config --list --show-origin
Показано, що оригінальний ДОМАШНЄ все ще діє.
Для мене це спрацювало дуже просто:
Рішення без необхідності змінювати змінну
ОС ОС Windows HOME :
Версія Windows 10 git: 2.27.0.Windows.1
Я використовую портативну версію Git, тому всі мої конфігураційні файли знаходяться на моєму накопичувачі (E :). Це для мене працювало:
.gitconfig
і інші файли bash в E , тому я створив папку під назвою 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. Це лише для того, щоб продемонструвати, що ми успішно змінили розташування файлу .gitconfig без зміни каталогу HOME у Windows.