आप एक अलग उपयोगकर्ता के रूप में कोड कैसे बनाते हैं?


112

मैं एक स्क्रिप्ट के लिए ऐसा करने में सक्षम होना चाहता हूं। मैं अनिवार्य रूप से Git में कुछ कोड के पूरे संस्करण इतिहास को फिर से बना रहा हूं - यह वर्तमान में एक अलग संस्करण नियंत्रण प्रणाली का उपयोग करता है। मुझे स्क्रिप्ट की जरूरत है कि कमिट में मूल लेखक (और तारीख) को संरक्षित करते हुए कमिट्स में जोड़ सकूं।

यह मानते हुए कि मैं प्रतिबद्ध लेखक हूं और जिस तारीख / समय में बदलाव किया गया था, क्या कोई Git कमांड है जो मुझे ऐसा करने की अनुमति देता है? मैं मान रहा हूँ कि वहाँ है, क्योंकि git-p4 कुछ ऐसा ही करता है। मैं बस इसे करने का सबसे अच्छा तरीका पूछ रहा हूं।


1
क्या आपने तेज-आयात का उपयोग करने की कोशिश की है?
वैकल्पिक

मैं सहमत हूं, तेजी से आयात करने का सबसे अच्छा तरीका है। आप जीआईटी कमिट (या अधिक सही तरीके से अंतर्निहित प्लंबिंग: हैश-ऑब्जेक्ट , अपडेट-इंडेक्स , राइट-ट्री , कम -ट्री , अपडेट-रिफ , आदि) का उपयोग कर सकते हैं, लेकिन तेजी से आयात होगा, अच्छी तरह से, तेज।
क्रिस जॉन्सन

मैंने तेजी से आयात के बारे में सोचा था, लेकिन जैसा कि मैं खुद काफी शुरुआती हूं, मैंने बुनियादी कमांड का उपयोग करने का फैसला किया। पूरी तरह से ईमानदार होने के लिए मुझे पूरी तरह से समझ में नहीं आता है कि तेजी से आयात कैसे काम करता है और इसलिए जब तक मैं इसे बेहतर नहीं समझता, तब तक इसे इस्तेमाल करने में थोड़ा संकोच होता है। हां, कमिट का उपयोग करके यह काफी धीमा हो जाएगा, लेकिन कम से कम मुझे पता होगा कि क्या उम्मीद है - विशेष रूप से डिबगिंग करते समय।
कार्ल

1
git कमिट --author = "नाम <name@example.com>" -a -m "प्रतिबद्ध संदेश"
Masih

जवाबों:


148

इसके लिए --authorविकल्प देखें git commit:

से आदमी पेज :

--author=<author>

प्रतिबद्ध लेखक को ओवरराइड करें। मानक A U Thor <author@example.com>प्रारूप का उपयोग करके एक स्पष्ट लेखक निर्दिष्ट करें । अन्यथा <author>एक पैटर्न माना जाता है और इसका उपयोग उस लेखक (मौजूदा rev-list --all -i --author=<author>) द्वारा एक मौजूदा प्रतिबद्ध की खोज करने के लिए किया जाता है ; प्रतिबद्ध लेखक को तब इस तरह के पहले प्रतिबद्ध से कॉपी किया जाता है।


18
इसके अलावा, --dateतारीख को ओवरराइड करने का विकल्प।
क्रिस जॉन्सन

क्या आप एक विशिष्ट उदाहरण दे सकते हैं, जो कुछ मैं कोशिश करता हूं

@Tim Henigan: ऐसा लगता है कि प्रलेखन अब पर होस्ट की है Github तो आदमी पेज लिंक आप पोस्ट मर चुका है। क्या आप पुष्टि कर सकते हैं कि नया पृष्ठ एक ही बात है (मामले में अन्य उत्तर हैं जिन्हें लिंक की आवश्यकता है)?
R0MANARMY

@ R0MANARMY: मैंने URL अपडेट किया। GitHub पृष्ठ सही हैं। मैंने अपने लिंक को अपडेट किया, क्योंकि मैन पेज अब kernel.org पर होस्ट नहीं किए गए हैं। मुझे बदलाव के बारे में बताने के लिए धन्यवाद।
टिम हेनिगन

1
यहाँ मैंने जो प्रयोग किया है वह समाप्त हो गया है:git commit -a --author="$user_details" --date="submit_date $submit_time" --file=/tmp/commit_msg
कार्ल

113

बस इसे जोड़ने के लिए: --authorस्वीकृत उत्तर में वर्णित विकल्प केवल लेखक को ओवरराइड करेगा , न कि कमिट की जानकारी।

यह ज्यादातर मामलों में सही व्यवहार है, लेकिन अगर किसी कारण से आपको कमिटरी जानकारी को मैन्युअल रूप से ओवरराइड करने की आवश्यकता है , तो GIT_COMMITTER_NAMEऔर GIT_COMMITTER_EMAILपर्यावरण चर का उपयोग करें (एक GIT_COMMITTER_DATEअच्छी तरह से है)। देखें Git-internals-पर्यावरण-चर

$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="name@email.com" git commit --author="New Name <name@email.com>"

यह कमिटेड लुक को वैसा ही बना देगा जैसा कि यह निर्दिष्ट उपयोगकर्ता द्वारा लिखा और प्रतिबद्ध था ।


16
... और अंतर देखने के लिए:git log --pretty=fuller
bluenote10

2
उत्तम। यह वही है जो मैं चाहता था और मुझे जीआईटी इंटर्नल्स मैन पेज कभी नहीं मिल सकता था।
ksp

3

अपनी ~ / .gitconfig फ़ाइल को संपादित करें और एक नया उपनाम जोड़ें जहां आप एक गैर-डिफ़ॉल्ट उपयोगकर्ता और ईमेल को अनुकूलित कर सकते हैं।

[user]
  name = My Name
  email = default@email.com

[alias]
  commit-x = -c user.name='My X Name' -c user.email='mr_x@email.com' commit
  commit-y = -c user.name='My Y Name' -c user.email='mr_y@email.com' commit
  commit-z = -c user.name='My Z Name' -c user.email='mr_z@email.com' commit

झसे आज़माओ

git commit -m "Custom message with committer and author My Name <default@email.com>"
git commit-x -m "Custom message with committer and author My X Name <mr_x@email.com>"
git commit-y -m "Custom message with committer and author My Y Name <mr_y@email.com>"
git commit-z -m "Custom message with committer and author My Z Name <mr_z@email.com>"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.