2010-08-29 10 views
22

पर एक धक्का देने के लिए उपयोगकर्ता नाम में संशोधन करें मैंने गीथब पर एक नए फोर्कड गिट रेपो को धक्का दिया लेकिन काम करने के बाद मैंने देखा कि मेरा उपयोगकर्ता नाम गलत था। मैंने जो उपयोगकर्ता नाम दिया था वह "ब्रॉक वूल्फ" था लेकिन यह brockwoolf होना चाहिए जो कि गीथूब पर मेरा उपयोगकर्ता नाम है।गीथब

मैं पहले से ही इस तरह स्थानीय स्तर पर डिफ़ॉल्ट बदल दिया है:

git config --global user.name "brockwoolf" 

लेकिन मैं पर पहले से ही बदल धक्का दिया उपयोगकर्ता नाम कैसे बदल सकते हैं?

+0

आप निश्चित रूप से कर सकते हैं क्या कर सकते हैं आप अपनी परियोजनाओं के साथ पसंद है, लेकिन है कि config पैरामीटर करना 'user.name' है, उपयोगकर्ता नाम नहीं, जैसा कि" उपयोगकर्ता के नाम "में है। इसके लिए असली नाम का उपयोग करना काफी आम है। – Cascabel

+0

मुझे पता है लेकिन जिथब के लिए, आप अपना उपयोगकर्ता नाम इस्तेमाल करते हैं या यह मुझे लगता है कि ग्रेवतर को संबद्ध नहीं करेगा। –

+0

डुप्लिकेट [मैं गिट में किसी प्रतिबद्धता के लेखक को कैसे बदलूं?] (Http://stackoverflow.com/questions/750172/how-do-i-change-the-author-of-a-commit-in- गिट) –

उत्तर

26

अगर पहले से ही धक्का दिया गया है, तो लोगों ने इसे खींच लिया है, ऐसा कुछ है जिसके साथ आपको रहना होगा। कोई भी इसे खींच लिया है (अर्थात आप सही धक्का देने के बाद अपनी गलती का एहसास), तो आप में संशोधन कर सकते हैं अपने लिए प्रतिबद्ध:

git commit --amend 

वाकई प्रतिबद्ध करने के लिए किसी भी नए परिवर्तन जोड़ने नहीं करती - -a का उपयोग नहीं करते, डॉन पहले git add का उपयोग नहीं करें। तो फिर तुम, धक्का मजबूर कर सकते हैं के बाद से यह एक गैर तेजी से आगे परिवर्तन है:

git push -f 

अगर कोई पहले से ही ली गई गलत नाम ... के साथ प्रतिबद्ध यह शायद वास्तव में उन्हें गंदगी नहीं होगा, विलय के बाद से मूल प्रतिबद्धता वाले कुछ के साथ यह आसान होना चाहिए; पैच एक ही हैं। हालांकि, अगर वह व्यक्ति कभी भी आपके रेपो पर वापस धकेलता है, तो वह उस विलय को धक्का देगा - इसके साथ-साथ मूल प्रतिबद्धता के साथ। यदि आप रेपो में दोनों नाम के साथ समाप्त करते हैं तो अपने आप को नाम बदलने के उद्देश्य को हराया जाता है। (यह वास्तव में समस्या मैं ओपी के जवाब पर मेरी टिप्पणी में वर्णित है।)

+1

-f पुश के लिए मैन पेज में नहीं है। विशेष रूप से क्या करते हैं? चेकआउट-एफ की तरह कुछ? –

+0

@ जोनाथन: हाँ यह है। यह उपयोग कथन में है '[-f | --force] ', और यह विकल्प अनुभाग में लगभग दस के बारे में छोटे और लंबे दोनों नामों के तहत वर्णित है। यह उत्तर में मैंने जो सुझाव दिया है: गैर-तेज़-आगे धक्का सामान्य रूप से अस्वीकार कर दिया जाता है, लेकिन इससे इसे स्वीकार किया जा सकता है। – Cascabel

+0

मैं अपना प्रश्न वापस लेता हूं - यह निश्चित रूप से वहीं है।मुझे अपना सिर खोना होगा। शायद मैं गलत आदमी पेज हाहा देख रहा था। –

3

मीठे मैं यह पता लगा:

git commit -a --amend 
git pull 
git push 

जवाब देने के लिए स्वतंत्र महसूस, आप एक बेहतर तरीका मैं तुम्हारा सही चिह्नित कर देंगे है।

+2

यह वास्तव में मूल प्रतिबद्धता को नहीं बदलेगा। 'गिट पुल' मूल 'मास्टर /' की मूल स्थिति प्राप्त करता है, जो मूल प्रतिबद्धता 'मास्टर @ {1}' है। फिर यह विलीन हो जाता है। विलय आसानी से चला जाता है, क्योंकि दोनों पक्षों ने बिल्कुल वही परिवर्तन किया है; केवल अंतर ही प्रतिबद्धता पर नाम और तारीख है। दोनों काम अभी भी वहाँ हैं। – Cascabel

+1

(और आपको शायद '-a' की आवश्यकता नहीं थी, जब तक कि आप अतिरिक्त परिवर्तन नहीं कर रहे थे और साथ ही नाम बदल रहे थे ...) – Cascabel

+0

@ जेफ्रोमी: आपकी टिप्पणियों के लिए धन्यवाद। हां मुझे शायद '-ए' स्विच की आवश्यकता नहीं थी। –

3

के रूप में उल्लेख किया here, आप

git commit --amend --author="Author Name <[email protected]>" 
git push -f