कॉन्फ़िगर उपयोगकर्ता को एक एकल कमिट के लिए कॉन्फ़िगर किया गया


97

मैं अपने काम के लैपटॉप से github.com पर एक परियोजना के लिए प्रतिबद्ध करने की कोशिश कर रहा हूं , जो कंपनी गिट सर्वर के लिए पहले से ही कॉन्फ़िगर है। क्या अलग-अलग लेखक क्रेडेंशियल्स को निर्दिष्ट करने का एक तरीका है, एक अलग कॉन्फ़िगरेशन फ़ाइल या ऑथर कमांड लाइन स्विच का उपयोग करना संभव है?

मैंने प्रयोग करने की कोशिश की है

--author="My Name <MyNameEmail@email.com>" 

और मुझे संदेश प्राप्त हुआ:

 Committer: unknown <WorkEmail@workemail.net>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

लेकिन यह अभी भी github.com परियोजना के लिए मेरे उपयोगकर्ता नाम को अद्यतन नहीं किया। क्या कुछ और है जो मैं कोशिश कर सकता हूं और क्या यह संभव है?


2
Git में भेद किया लेखक और committer । अस्थायी रूप से एक कमांड के लिए कमिटर सेट करने के लिए, उपयोग करें -c user.name=Me user.email=me@example.com। एक कस्टम ग्लोबल कॉन्फ़िगरेशन का उपयोग करने के लिए, इस प्रश्न को देखें , या शेल उर्फ ​​युक्त -cविकल्पों का उपयोग करें। लेकिन इनमें से कोई भी शायद इस स्थिति में करने के लिए सही बात नहीं है - आप प्रति-रेपो कॉन्फ़िगरेशन चाहते हैं।
रॉबिन ग्रीन

2.22 Git (Q2 2019) के साथ, आपके पास समर्पित सेटिंग्स होंगी {author,committer}.{name,email}मेरा जवाब नीचे देखें
VONC

जवाबों:


177

सबसे पहले, लेखक जरूरी नहीं कि कमिटर के समान हो। गिट दोनों को ट्रैक करता है।

केवल इस रिपॉजिटरी के लिए किस नाम का उपयोग करें, यह निर्धारित करने के लिए, आप यह कर सकते हैं:

git config user.name "Your Name"
git config user.email "Your email"

--globalविकल्प की अनुपस्थिति पर ध्यान दें । यह केवल इस रिपॉजिटरी में कॉन्फ़िगरेशन सेट करेगा।

वैकल्पिक रूप से, आप -cविकल्प का उपयोग करके केवल एक ही आदेश के लिए ऐसा कर सकते हैं :

git -c "user.name=Your Name" -c "user.email=Your email" commit ...

लेकिन मुझे लगता है कि ऊपर दिए गए कॉन्फिगर विकल्पों का इस्तेमाल करना बेहतर है।


5
यह ठीक वैसा ही है जैसा कि मुझे अपने खाते के तहत git रेपो में साझा खाते (मूल सर्वर पर रूट) से करने की आवश्यकता है और मैं नहीं चाहता कि दूसरों को मेरा नाम / ईमेल की पेशकश की जाए।
andrej

57

इसे अपने git कमांड में प्रस्तुत करने का प्रयास करें:

git -c user.email=email@domain.fr -c user.name='Your Name'

यह एक-शॉट के लिए ठीक है, लेकिन आप इसे स्थानीय रीपो के .it / config फ़ाइल में सहेजना पसंद कर सकते हैं जिसे आपने गिट से क्लोन किया है। इसे चलाने के द्वारा किया जा सकता है git config (कोई --global या --system इसे "रेपो के लिए स्थानीय" बनाने के लिए) या इसे संपादित करके .git/config(यह उसी वाक्यविन्यास के रूप में है)~/.gitconfig


1
धन्यवाद! मैं कई लोगों के साथ एक सर्वर साझा कर रहा हूं और डिफ़ॉल्ट उपयोगकर्ता सेट नहीं करना चाहता। यह पूर्ण है!
भयंकर रूप से

1
@horriblyUnpythonic का आप स्वागत करते हैं :) आप अपने में एक उपनाम भी बना सकते हैं .bash_aliases, और / या उपयोगकर्ता द्वारा परिभाषित न किए जाने पर प्रतिबद्ध को अस्वीकार करने के लिए पूर्व-प्रतिबद्ध हुक भी सेट कर सकते हैं।
आसनार

28

तुम भी वातावरण चर सेट कर सकते हैं GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME, और GIT_AUTHOR_EMAILएक प्रति खोल या यहाँ तक कि प्रति-आदेश के आधार पर।


महान, जैसा कि यह ज्यादातर एक साझा कंप्यूटर परिदृश्य में उपयोग किया जाएगा, स्वचालित सफाई के साथ प्रति सत्र एकदम सही है।
किमीैक

1
मेरे लिए काम नहीं किया। लेखक बाद में वही रहा git commit --amend। केवल कमिटर बदले गए।
ओंद्रा Oižka

यहाँ भी मैंने ऐसा ही कियाgit commit --amend --author="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
KCD

1
ऐसा इसलिए है क्योंकि git commit --amendडिजाइन लेखक को बदल नहीं सकता है, जैसा कि मैनपेज कहता है। समाधान: git commit --amend --reset-author
kubanczyk

7

मेरा मानना ​​है कि आप चला सकते हैं:

git config user.name "Your Name"
git config user.email you@example.com

गिट के विभिन्न भागों के लिए। उस फ़ोल्डर को खोलने का प्रयास करें जहां रेपो के लिए github सर्वर पर काम किया जा रहा है।

सुनिश्चित करें कि आप उस कार्य फ़ोल्डर में .git फ़ोल्डर देखते हैं। अब टर्मिनल / कंसोल / कमांडप्रॉप्ट में उस फ़ोल्डर को खोलें और ऊपर निर्दिष्ट किए गए कमांड को चलाकर केवल उस फ़ोल्डर के लिए उपयोगकर्ता नाम और ईमेल को बदलने का प्रयास करें।

इसे बदलकर, आप अब GitHub सर्वर तक पहुंचने में सक्षम हो सकते हैं।

यहाँ एक नज़र डालें: https://help.github.com/articles/setting-your-username-in-git

इसके अलावा, मेरा मानना ​​है कि कमांड में ही अपने github यूज़रनेम और पासवर्ड का उपयोग करके रिमोट रेपो पर पुश करने का एक तरीका है, लेकिन मैं इसे उद्धृत नहीं कर रहा हूं क्योंकि यह मेरे लिए काम नहीं करता था।


5

जेसी ग्लेक के जवाब पर यहां एक विस्तारित कार्यान्वयन के साथ क्योंकि आईएमओ उनका सुझाव इसके लिए जाने का सबसे अच्छा तरीका है।

अपने .bash_profile में नीचे जोड़ें। जब आप पहली बार सक्रिय शेल में कोई git कमांड चला रहे हैं तो यह आपको एक उपयोगकर्ता के लिए संकेत देगा। यह तब उपयोगकर्ता को बाद के सभी रन के लिए याद रखेगा।

(मामले ब्लॉक में विभिन्न git auther / नाम मानों के लिए वांछित वांछित नामों और ईमेल पतों के लिए स्पष्ट रूप से एक इनपुट उपयोगकर्ता मूल्य को पार करें) और आवश्यकतानुसार असाइन को अपडेट करें)

git() {
  echo "Running BETTER git..."
  if [ -z "$GIT_COMMITTER_NAME" ]; then
    while true; do
      read -p "Git User: " UNAME
      case $UNAME in
          user1 ) break;;
          user2 ) break;;
          * ) echo "Invalid User";;
      esac
    done
    GIT_COMMITTER_NAME=$UNAME
    export GIT_COMMITTER_NAME
    GIT_COMMITTER_EMAIL=$UNAME@domain.com
    export GIT_COMMITTER_EMAIL
    GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME
    export GIT_AUTHOR_NAME
    GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL
    export GIT_AUTHOR_EMAIL
  fi
  echo "  using git user: $GIT_AUTHOR_NAME / $GIT_AUTHOR_EMAIL"
  /usr/bin/git "$@"
}

2

तुम भी वातावरण चर सेट कर सकते हैं GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME, और GIT_AUTHOR_EMAILएक प्रति खोल या यहाँ तक कि प्रति-आदेश के आधार पर।

दरअसल, Git 2.22 (Q2 2019) के बाद से आपके पास एक नया विकल्प है: अधिक विशिष्ट मामलों में {author,committer}.{name,email}ओवरराइड करने के लिए चार नए कॉन्फ़िगरेशन चर पेश किए गए हैं user.{name,email}

विलियम ह्यूब्स (``) द्वारा प्रतिबद्ध 39ab4d0 (04 फरवरी 2019) देखें । (द्वारा विलय Junio सी Hamano - - में 4e021dc प्रतिबद्ध , 07 मार्च 2019)
gitster

config: अलग लेखक और कमेंट आइडेंट देना

author.email, author.name, committer.emailऔर committer.nameसेटिंग्स के अनुरूप हैं GIT_AUTHOR_*और GIT_COMMITTER_*के लिए वातावरण चर, लेकिन git configप्रणाली।
यह उन्हें प्रत्येक रिपॉजिटरी के लिए अलग से सेट करने की अनुमति देता है।

Git पर्यावरण चर के साथ अलग-अलग लेखकों और कम जानकारी की स्थापना का समर्थन करता है। हालांकि, पर्यावरण चर शेल में सेट किए जाते हैं, इसलिए यदि अलग-अलग रिपॉजिटरी के लिए अलग-अलग लेखकों और कमिट जानकारी की आवश्यकता होती है, तो बाहरी उपकरण की आवश्यकता होती है।

इस के लिए Git config करने के लिए समर्थन जोड़ता है author.email, author.name, committer.emailऔर committer.name सेटिंग्स इस जानकारी भंडार के आधार पर तय किया जा सकता है।

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