Windows पर .gitconfig स्थान बदलना


105

डिफ़ॉल्ट रूप से Windows Git में वैश्विक .itconfig को स्थान दिया गया है c:\documents and settings\user\

मैं उस स्थिति को कैसे बदल सकता हूं c:\my_configuration_files\

क्या यह बिल्कुल भी किया जा सकता है?


बस मैं जोड़ना चाहता था मैं भी इस में चल रहा हूँ। मेरे पास मेरे सभी अन्य वैश्विक git config सामान ("exludesfiles" और "attrirutesfile")% userprofile% / / git / .ignignore (इसलिए एक फ़ोल्डर में) हैं, लेकिन .gitconfile मैं इसके ठीक बगल में बैठना पसंद करूंगा। , लेकिन% userprofile% की जड़ पर होना चाहिए .. बस वास्तव में कष्टप्रद।
WORMSS

6
प्रश्न पूछे जाने के बाद से कोई प्रगति? मेरा .itconfig डिफ़ॉल्ट रूप से एक नेटवर्क ड्राइव पर बैठता है, जिसका अर्थ है कि जब मैं ऑफ़लाइन हूं तो इसे पढ़ नहीं सकता।
लेक रज़्ज़ीकी

जवाबों:


67

यदि आप सेट HOMEकरते हैं c:\my_configuration_files\, तो git का पता लगाएगा। पर्यावरण चर का संपादन यहां वर्णित है । आपको गृह चर सेट करने की आवश्यकता है, फिर किसी भी cmd.exe विंडो को फिर से खोलें। यह सत्यापित करने के लिए "सेट" कमांड का उपयोग करें कि होम वास्तव में सही मान को इंगित करता है।

निश्चित रूप से, गृह परिवर्तन अन्य अनुप्रयोगों को भी प्रभावित करेगा। हालाँकि, git के सोर्स कोड को पढ़ने से, जो कमांड लाइन को समायोजित करने की आवश्यकता के बिना इन फ़ाइलों के स्थान को बदलने का एकमात्र तरीका प्रतीत होता है। आपको स्टीफन की प्रतिक्रिया पर भी विचार करना चाहिए: आप GIT_CONFIG चर सेट कर सकते हैं। हालाँकि, इसे अपनी इच्छानुसार प्रभाव देने के लिए, आपको --globalध्वज को सभी गिट इनवोकेशन (साथ ही किसी भी स्थानीय .गित / कॉन्फिग फाइल को नजरअंदाज) करने की आवश्यकता है।


2
हम्म, निश्चित नहीं कि अगर मैं सही तरीके से समझ पाऊं लेकिन घर नहीं बदल पाऊंगा तो इसका उपयोग करने वाले अन्य सभी अनुप्रयोगों पर भी प्रभाव पड़ेगा? क्या घर बदलने का कोई तरीका नहीं है, लेकिन Git के लिए स्थानीय?
रुके

हां, अन्य अनुप्रयोगों पर भी इसका प्रभाव पड़ेगा। आपने पूछा कि स्थान कैसे बदलना है, और मैंने आपको बताया। मेरा संपादन देखें।
मार्टिन वी। लोविस

10
क्या किसी को वास्तव में घर के चलने के दुष्प्रभावों के बिना काम करने के लिए मिल गया है जो अन्य चीजों के पूरे भार को गड़बड़ाने वाला है?
एडी मिलर

यह सबसे अधिक संभावना एक समाधान है जो विंडोज प्लेटफॉर्म पर काम करता है। इसने मेरे लिए भी काम किया। मैंने घर के वातावरण के चर को ताज़ा करने के लिए चॉकलेटी की रिफ्रेशव स्क्रिप्ट का उपयोग किया जिसे मैंने सेट किया (उपयोगकर्ता पर्यावरण चर)। उसके बाद, मुझे वांछित फ़ाइल स्थान मिला।
टॉरस्टैड

मुझे काम करने के लिए Git को फिर से स्थापित करना पड़ा। अगर मैंने घर में नाम का एक नया परिवेश चर जोड़ा और .gitconfigफ़ाइल को उस निर्देशिका में स्थानांतरित कर दिया , तो यह काम नहीं किया।
सेसाबा

46

इसके लिए गृह निर्देशिका बदलें गलत है। बेहतर घर निर्देशिका के लिए gitconfig के लिए प्रतीकात्मक लिंक है।

  1. उपयोगकर्ता होम निर्देशिका से अपनी .gitconfig को उस निर्देशिका में ले जाएँ जहाँ आप चाहते हैं।
  2. प्रशासक के रूप में कमांड लाइन चलाएं
  3. अपनी उपयोगकर्ता होम निर्देशिका पर जाएं
  4. Mklink दर्ज करें .itconfig \ PathForNewLocationOfConfig.gitconfig

9
यह जोड़ने योग्य हो सकता है कि यदि आप अपने कॉन्फिगर में कोई आइटम जोड़ने के लिए git config --global चलाते हैं, जो आपके सिम्पील को .itconfig की वास्तविक प्रति के साथ अधिलेखित किया जाएगा, जिसका उपयोग किया जा रहा है। जब इस स्थान पर परीक्षण किया गया था, जब \ PathForNewLocationOfConfig.gitconfig मेरे ड्रॉपबॉक्स फ़ोल्डर का परीक्षण कर रहा था
MotoWilliams

8
यदि आपका .itconfig नेटवर्क ड्राइव पर स्थित है, तो आपको "डिवाइस प्रतीकात्मक लिंक का समर्थन नहीं करता" संदेश मिल सकता है जो इस विकल्प को नियंत्रित करता है।
दोपहर ५'१५ से १५:०५

4
मुझे नहीं लगता कि यह समाधान किसी के लिए काम करेगा। हमारी कंपनी में, $HOMEएक नेटवर्क ड्राइव पर है और जब भी नेटवर्क कनेक्शन में कोई समस्या आती है, तो लिंक भी पहुंच से बाहर है।
andreee

1
2017 में @MotoWilliams इस पर फिर से गौर कर रहे हैं: सिग्लिन --global
Snake

2
यहाँ, समूह पुलिस (AD) HOMEDRIVE, HOMEPATH और HOMESHARE को सेट करती है, लेकिन सादे, पुराने, साधारण घर को नहीं। गृह की अनुपस्थिति में, गिट पिछले तीन के कुछ संयोजन का उपयोग करते हैं। लेकिन घर सेट करना (उपयोगकर्ता-विशिष्ट पर्यावरण चर स्थापित करने के लिए सामान्य पद्धति के माध्यम से) काम करता है: जीआईटी आपके द्वारा निर्धारित गृह मूल्य का उपयोग करता है, और ग्रुओपोलिस घर को बंद नहीं करता है।
डेविड आई।

29

मैंने इस समस्या को थोड़ा अलग दृष्टिकोण का उपयोग करके हल किया है जिसे मैंने अन्य कॉन्फ़िगरेशन फ़ाइलों के लिए काम देखा है। Git कॉन्फ़िग सपोर्ट में वह शामिल है जो आपको किसी अन्य स्थान पर कॉन्फ़िगरेशन फ़ाइल को इंगित करने की अनुमति देता है। उस वैकल्पिक स्थान को तब आयातित और विस्तारित किया जाता है जैसे कि वह .itconfig फ़ाइल का हिस्सा था। इसलिए अब मेरे पास .gitconfig में केवल एक प्रविष्टि है:

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

Git द्वारा .itconfig फ़ाइल में लिखा गया कोई भी अपडेट मेरे शामिल पथ को अधिलेखित नहीं करेगा। इसका अर्थ है कि कभी-कभी मुझे .gitconfig से my.config तक मान को स्थानांतरित करने की आवश्यकता हो सकती है।


+1: कोई विषम विन्यास नहीं है और मेरा वैश्विक gitconfig कुछ ऐसा है जिसे मैं git repo में ही स्टोर करता हूं, इसलिए जो मेरा काम है, उस पर नज़र रखता है। वैश्विक परिवर्तन करते समय मैं सिर्फ वैश्विक फ़ाइल को हाथ से संपादित करता हूं। तो यह मेरे लिए पूरी तरह से काम करता है, और आपके "होम" पर्यावरण चर को बदलने की तरह कोई विषमता की आवश्यकता नहीं है, जो कि आप चाहते हैं, जहां गिट के विन्यास प्राप्त करने के लिए एक अजीब विचार है। घर की निर्देशिका के बाद कई अन्य कार्यक्रमों के अन्य अर्थ हैं। इसके अलावा आप शीर्ष पर एक अलग पहचान रख सकते हैं और इस समाधान के साथ अपनी मुख्य सेटिंग्स को समान पहचान में रख सकते हैं। अति उत्कृष्ट!
user62177541

2
मुझे आश्चर्य है कि अगर फाइल में git config लिखना संभव हो तो इसके बजाय [शामिल] d फाइल में लिखें।
जोनाथन नाज़ारियो

1
@ जोनाथन नाज़ारियोgit config --file "included.file"
पेरो पी।


11

मैं कोई गिट मास्टर नहीं हूं, लेकिन मेरे लिए सबसे आसान काम करने वाले समाधान के बारे में खोजना सिर्फ एक पाठ संपादक में जाना C:\Program Files (x86)\Git\etcऔर खोलना profileथा।

ifलाइन 37 पर एक बयान है # Set up USER's home directory। मैंने ifस्टेटमेंट निकाला और लोकल डाइरेक्टरी में डाल दिया कि मैं gitconfig बनना चाहता हूं, तो मैंने अपनी मौजूदा gitconfig फाइल (एक नेटवर्क ड्राइव पर) को उस लोकेशन पर कॉपी कर लिया।


अनेक अनेक धन्यवाद। हालांकि अन्य सभी विकल्प मेरे लिए विफल रहे, लेकिन इसने मुझे एक मिलियन git स्टेटमेंट्स को 6 सेकंड से गुणा किया: D यहाँ मैंने क्या किया ... `HOME =" $ USERPROFILE \ Downloads \ Tools \ Git_Config "`
PraNNandas

2
शब्द 'घर' (या आप के लिए कुछ भी देखने योग्य रेखा: 37) अब git 2.24 (दिसंबर 2019) में मौजूद नहीं है।
फ्रैंक नॉक

6

मेरे लिए, स्टार्ट इन लोकेशन (कम से कम git-gui) को बदलने से यह प्रभावित नहीं हुआ। यह कहां-कहां दिख रहा है। काम पर मेरा सेटअप यू: हमारे घर के लिए है, लेकिन हमारे पास यू में लिखने की अनुमति नहीं है: सीधे, केवल उपनिर्देशिकाएं जो हमारे लिए अंदर बनाई गई थीं, इसलिए यह मेरे लिए एक सौदा-ब्रेकर था।

मैंने एक बैच स्क्रिप्ट बनाकर समस्या हल की जो उस एप्लिकेशन के HOMEDRIVE और HOMEPATH env वेरिएबल्स को ओवरराइड करेगी। फिर उस बैच स्क्रिप्ट को इंगित करने के लिए मेरे प्रारंभ मेनू शॉर्टकट को बदल दिया।


1
मुझे इस फिक्स को पूरा करने के लिए आपने क्या किया, इस बारे में अधिक जानकारी चाहिए।
मैट कास्टो

क्या आप अपना समाधान साझा कर सकते हैं?
साल

4

पहले होम सेटिंग की जाँच करें, फिर होम और होममेड को मौजूदा डायर में बदलें।

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

उसके बाद घर और घर बदलें

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

3

यदि आप खिड़कियों पर हैं और या तो पर्यावरण चर बदलते हुए समस्याएँ हैं या mklinkअपर्याप्त विशेषाधिकारों के कारण, आपकी समस्या का एक आसान समाधान दूसरे स्थान पर गिट बैच शुरू करना है।

बस Git Bash.exe पर राइट क्लिक करें, गुणों पर क्लिक करें और "प्रारंभ" संपत्ति को में बदलें c:\my_configuration_files\


वाह यह पूरी तरह से आसानी के साथ काम करते हैं। एक नया शॉर्ट कट और 'गुण-> प्रारंभ' के तहत ' %HOMEDRIVE%%HOMEPATH%c: \ my_repo_folder ' में बदल दिया गया । एक आकर्षण काम किया।
शेन

2
यह मेरे लिए काम नहीं किया। .Itconfig फ़ाइल अभी भी मेरे होम डायरेक्टरी
डेव बी

3

मैं वही काम करना चाहता था। सबसे अच्छा मैं पा सकता था @ 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
}

2

कोई है जो एक बहुत लंबे समय के लिए इस में रुचि रखते हैं के रूप में। मैनुअल से देखें:

$ XDG_CONFIG_HOME / git / config - दूसरा उपयोगकर्ता-विशिष्ट कॉन्फ़िगरेशन फ़ाइल। अगर$XDG_CONFIG_HOME सेट या खाली नहीं है, तो $ HOME / .config / git / config का उपयोग किया जाएगा। इस फ़ाइल में किसी भी एकल-मूल्यवान चर को ~ / .gitconfig में जो कुछ भी है, द्वारा अधिलेखित कर दिया जाएगा। यह एक अच्छा विचार है कि यदि आप कभी-कभी Git के पुराने संस्करणों का उपयोग करते हैं तो इस फ़ाइल को न बनाएं, क्योंकि इस फ़ाइल का समर्थन हाल ही में जोड़ा गया था।

जिसे हाल ही में जोड़ा गया था। यह डंप 2.15.0 से है।

मेरे लिये कार्य करता है।


यह विंडोज में सबसे सरल, कम से कम घुसपैठ, सबसे विश्वसनीय समाधान है।
kwill

2
  1. फ़ोल्डर में बदलें %PROGRAMFILES%\Git\etc
  2. फ़ाइल संपादित करें profile
  3. पहली पंक्ति में जोड़ें HOME="c:\location_were_you_want_gitconfig"
  4. किया हुआ

नोट: फ़ाइल अनुमतियाँ आमतौर पर प्रतिबंधित होती हैं, इसलिए उन्हें तदनुसार बदलें या आप अपने परिवर्तनों को सहेजने में सक्षम नहीं होंगे।


यह git 2.24, Win10, दिसंबर 2019 के अनुसार काम नहीं कर रहा है। git config --list --show-originदिखाता है, मूल HOME अभी भी यथावत है।
फ्रैंक नॉक

1

मेरे लिए यह बहुत सरल था:

  1. पुरानी निर्देशिका से ".gitconfig" कॉपी करें:% USERPROFILE% ("c: \ users \ उपयोगकर्ता नाम" में मानक)
  2. GITGUI और GITBASH के स्टार्ट-आइकन पर राइट क्लिक करें और "रन इन": "% HOMEDRIVE %% HOMEPATH%" को "% USERPROFILE%" में बदलें। आप "% USERPROFILE%" के बजाय किसी अन्य निर्देशिका का उपयोग कर सकते हैं।

स्क्रीन शॉट से पहले

स्क्रीन शॉट के बाद


0

Windows होम चर
ओएस बदलने के लिए बिना समाधान : विंडोज 10
गिट संस्करण: 2.27.0.windows.1

मैं गिट के पोर्टेबल संस्करण का उपयोग करता हूं, इसलिए मेरी सभी कॉन्फ़िगर फाइलें मेरे पेन-ड्राइव (ई :) पर हैं। इसी से मेरा काम बना है:

  1. Https://it-scm.com/ से पोर्टेबल गिट डाउनलोड करें । फ़ाइल चलाएं और आवश्यक स्थान पर स्थापित करें। मैंने इसे E: \ git में स्थापित किया
  2. E: \ git से git-bash.exe चलाएं ।
  3. मैं .gitconfig में अन्य बैश फ़ाइलों को रखना चाहता था , इसलिए मैंने घर नामक एक फ़ोल्डर बनाया जहां मैं उन सभी को चाहता हूं।
    mkdir home
  4. आदि फ़ोल्डर में जाएँ और प्रोफ़ाइल नामक फ़ाइल खोलें (मेरे मामले में, यह E: \ git \ etc \ profile है)
  5. प्रोफ़ाइल निर्देशिका के अंत में हमारे द्वारा बनाई गई होम निर्देशिका में पूर्ण पथ जोड़ें (या उस निर्देशिका में जहां आप अपनी .gitconfig फ़ाइल को रखना चाहते हैं) ।
    HOME="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 फ़ाइल का स्थान सफलतापूर्वक बदल दिया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.