डिफ़ॉल्ट रूप से Windows Git में वैश्विक .itconfig को स्थान दिया गया है c:\documents and settings\user\
मैं उस स्थिति को कैसे बदल सकता हूं c:\my_configuration_files\।
क्या यह बिल्कुल भी किया जा सकता है?
डिफ़ॉल्ट रूप से Windows Git में वैश्विक .itconfig को स्थान दिया गया है c:\documents and settings\user\
मैं उस स्थिति को कैसे बदल सकता हूं c:\my_configuration_files\।
क्या यह बिल्कुल भी किया जा सकता है?
जवाबों:
यदि आप सेट HOMEकरते हैं c:\my_configuration_files\, तो git का पता लगाएगा। पर्यावरण चर का संपादन यहां वर्णित है । आपको गृह चर सेट करने की आवश्यकता है, फिर किसी भी cmd.exe विंडो को फिर से खोलें। यह सत्यापित करने के लिए "सेट" कमांड का उपयोग करें कि होम वास्तव में सही मान को इंगित करता है।
निश्चित रूप से, गृह परिवर्तन अन्य अनुप्रयोगों को भी प्रभावित करेगा। हालाँकि, git के सोर्स कोड को पढ़ने से, जो कमांड लाइन को समायोजित करने की आवश्यकता के बिना इन फ़ाइलों के स्थान को बदलने का एकमात्र तरीका प्रतीत होता है। आपको स्टीफन की प्रतिक्रिया पर भी विचार करना चाहिए: आप GIT_CONFIG चर सेट कर सकते हैं। हालाँकि, इसे अपनी इच्छानुसार प्रभाव देने के लिए, आपको --globalध्वज को सभी गिट इनवोकेशन (साथ ही किसी भी स्थानीय .गित / कॉन्फिग फाइल को नजरअंदाज) करने की आवश्यकता है।
.gitconfigफ़ाइल को उस निर्देशिका में स्थानांतरित कर दिया , तो यह काम नहीं किया।
इसके लिए गृह निर्देशिका बदलें गलत है। बेहतर घर निर्देशिका के लिए gitconfig के लिए प्रतीकात्मक लिंक है।
$HOMEएक नेटवर्क ड्राइव पर है और जब भी नेटवर्क कनेक्शन में कोई समस्या आती है, तो लिंक भी पहुंच से बाहर है।
मैंने इस समस्या को थोड़ा अलग दृष्टिकोण का उपयोग करके हल किया है जिसे मैंने अन्य कॉन्फ़िगरेशन फ़ाइलों के लिए काम देखा है। Git कॉन्फ़िग सपोर्ट में वह शामिल है जो आपको किसी अन्य स्थान पर कॉन्फ़िगरेशन फ़ाइल को इंगित करने की अनुमति देता है। उस वैकल्पिक स्थान को तब आयातित और विस्तारित किया जाता है जैसे कि वह .itconfig फ़ाइल का हिस्सा था। इसलिए अब मेरे पास .gitconfig में केवल एक प्रविष्टि है:
[include]
path = c:\\path\\to\\my.config
Git द्वारा .itconfig फ़ाइल में लिखा गया कोई भी अपडेट मेरे शामिल पथ को अधिलेखित नहीं करेगा। इसका अर्थ है कि कभी-कभी मुझे .gitconfig से my.config तक मान को स्थानांतरित करने की आवश्यकता हो सकती है।
git config --file "included.file"
के FILES और पर्यावरण अनुभाग में देखें git help config।
मैं कोई गिट मास्टर नहीं हूं, लेकिन मेरे लिए सबसे आसान काम करने वाले समाधान के बारे में खोजना सिर्फ एक पाठ संपादक में जाना C:\Program Files (x86)\Git\etcऔर खोलना profileथा।
ifलाइन 37 पर एक बयान है # Set up USER's home directory। मैंने ifस्टेटमेंट निकाला और लोकल डाइरेक्टरी में डाल दिया कि मैं gitconfig बनना चाहता हूं, तो मैंने अपनी मौजूदा gitconfig फाइल (एक नेटवर्क ड्राइव पर) को उस लोकेशन पर कॉपी कर लिया।
मेरे लिए, स्टार्ट इन लोकेशन (कम से कम git-gui) को बदलने से यह प्रभावित नहीं हुआ। यह कहां-कहां दिख रहा है। काम पर मेरा सेटअप यू: हमारे घर के लिए है, लेकिन हमारे पास यू में लिखने की अनुमति नहीं है: सीधे, केवल उपनिर्देशिकाएं जो हमारे लिए अंदर बनाई गई थीं, इसलिए यह मेरे लिए एक सौदा-ब्रेकर था।
मैंने एक बैच स्क्रिप्ट बनाकर समस्या हल की जो उस एप्लिकेशन के HOMEDRIVE और HOMEPATH env वेरिएबल्स को ओवरराइड करेगी। फिर उस बैच स्क्रिप्ट को इंगित करने के लिए मेरे प्रारंभ मेनू शॉर्टकट को बदल दिया।
यदि आप खिड़कियों पर हैं और या तो पर्यावरण चर बदलते हुए समस्याएँ हैं या mklinkअपर्याप्त विशेषाधिकारों के कारण, आपकी समस्या का एक आसान समाधान दूसरे स्थान पर गिट बैच शुरू करना है।
बस Git Bash.exe पर राइट क्लिक करें, गुणों पर क्लिक करें और "प्रारंभ" संपत्ति को में बदलें c:\my_configuration_files\।
%HOMEDRIVE%%HOMEPATH%c: \ my_repo_folder ' में बदल दिया गया । एक आकर्षण काम किया।
मैं वही काम करना चाहता था। सबसे अच्छा मैं पा सकता था @ MicTech समाधान। हालाँकि, जैसा कि @MotoWilliams द्वारा बताया गया है कि यह .itconfig फ़ाइल के लिए Git द्वारा किए गए किसी भी अपडेट से नहीं बचता है, जो केवल नई सेटिंग्स वाली एक नई फ़ाइल के साथ लिंक को बदल देता है।
मैंने निम्न PowerShell स्क्रिप्ट लिखकर और इसे अपनी प्रोफ़ाइल स्टार्टअप स्क्रिप्ट में चलाकर इसे हल किया। जब भी इसे चलाया जाता है, यह किसी भी सेटिंग को कॉपी करता है, जो कि उपयोगकर्ता .gitconfig को वैश्विक एक में जोड़ा गया है और फिर .gitconfig फ़ाइल के सभी पाठ को बदल देता है और []] हैडर जो वैश्विक फ़ाइल को आयात करता है।
मैं वैश्विक .itconfig फ़ाइल को कई अन्य वैश्विक स्क्रिप्ट और टूल के साथ रेपो में रखता हूं। मुझे बस इतना करना है कि किसी भी बदलाव की जांच करना याद रखें जो स्क्रिप्ट मेरी वैश्विक फ़ाइल पर लागू होती है।
यह मेरे लिए बहुत पारदर्शी तरीके से काम करता है। आशा करता हूँ की ये काम करेगा!
9 वीं सेप्ट: कॉन्फिग फाइल में जोड़े गए नए एंट्रीज को डुप्लिकेट करने और उन्हें नजरअंदाज करने पर पता लगाने के लिए अपडेट किया जाता है। यह सोर्सट्री जैसे उपकरणों के लिए उपयोगी है जो नए अपडेट लिखेंगे यदि वे मौजूदा नहीं खोज सकते हैं और इसमें शामिल नहीं हैं।
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\etcprofileHOME="c:\location_were_you_want_gitconfig"नोट: फ़ाइल अनुमतियाँ आमतौर पर प्रतिबंधित होती हैं, इसलिए उन्हें तदनुसार बदलें या आप अपने परिवर्तनों को सहेजने में सक्षम नहीं होंगे।
git config --list --show-originदिखाता है, मूल HOME अभी भी यथावत है।
मेरे लिए यह बहुत सरल था:
Windows होम चर
ओएस बदलने के लिए बिना समाधान : विंडोज 10
गिट संस्करण: 2.27.0.windows.1
मैं गिट के पोर्टेबल संस्करण का उपयोग करता हूं, इसलिए मेरी सभी कॉन्फ़िगर फाइलें मेरे पेन-ड्राइव (ई :) पर हैं। इसी से मेरा काम बना है:
.gitconfig में अन्य बैश फ़ाइलों को रखना चाहता था , इसलिए मैंने घर नामक एक फ़ोल्डर बनाया जहां मैं उन सभी को चाहता हूं।mkdir homeHOME="E:\git\home"अब यह .itconfig के लिए C: \ Users <उपयोगकर्ता नाम> निर्देशिका में खोज नहीं करता है, लेकिन केवल ऊपर आपके निर्धारित पथ में दिखता है।
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
इसने एक त्रुटि दी क्योंकि अभी तक एक .gitconfig फ़ाइल नहीं है। यह केवल यह प्रदर्शित करने के लिए है कि हमने विंडोज में होम डायरेक्टरी को बदले बिना .gitconfig फ़ाइल का स्थान सफलतापूर्वक बदल दिया है।