2012-06-06 10 views
6

पर प्रतिबिंबित नहीं करते मैं हाल ही में लेखक, committer और अपने स्थानीय प्रतिबद्ध के सभी में उसके ईमेल की जगह, निम्न आदेश का उपयोग कर:"Git फिल्टर शाखा" सफलतापूर्वक committer/लेखक को बदलने के लिए प्रयोग किया जाता है, लेकिन बदलाव GitHub

git filter-branch -f --env-filter ' 
if [ "$GIT_COMMITTER_NAME" = "oldname" ]; 
then 
    GIT_COMMITTER_NAME="newname"; 
    GIT_COMMITTER_EMAIL="newaddr"; 
    GIT_AUTHOR_NAME="newname"; 
    GIT_AUTHOR_EMAIL="newaddr"; 
fi 

if [ "$GIT_AUTHOR_NAME" = "oldname" ]; 
then 
    GIT_COMMITTER_NAME="newname"; 
    GIT_COMMITTER_EMAIL="newaddr"; 
    GIT_AUTHOR_NAME="newname"; 
    GIT_AUTHOR_EMAIL="newaddr"; 
fi 
' -- --all 

अपडेट तुरंत स्थानीय रूप से स्पष्ट होते हैं (उदाहरण के लिए मेरे स्रोत ट्री पर्यावरण में)। हालांकि, के बाद बल धक्का GitHub करने के लिए संशोधित भंडार ...

git push -f origin master 

... दो अलग-अलग आइटम हठ मना उनके committer और लेखक अद्यतन करने के लिए: Gemfile.lock फाइल और एक दृश्य निर्देशिका।

कृपया ध्यान दें कि:

  1. ऐसा दूसरी बार हुआ है कि मैं इस भंडार पर आपरेशन इस तरह का प्रदर्शन कर रहा है। मेरा मानना ​​है कि मुझे पहली बार ऐसे मुद्दों का सामना नहीं करना पड़ा।

  2. भंडार में मेरे पुराने नाम के लिए खोज रहा है ...

    $ find . "<oldname"> 
    

... परिणाम का एक समूह है, जिसका अर्थ है कि oldname अभी भी भंडार फ़ाइलों के कई में घूमता उपज करता है - फ़ाइलों सहित जो कि गिटहब और स्थानीय स्तर पर अपडेट दिखाई देता है।

मेरा प्रश्न, फिर: मैं गिटहब पर दो "जिद्दी" फ़ाइलों के कमिटर/लेखक को कैसे बदल सकता हूं?

+1

शायद गिटहब इस जानकारी को कैश कर रहा है? रेपो को एक नई शाखा या एक नए रेपो को धक्का देना एक ही समस्या का कारण बनता है? –

+1

जब आप Gemfile.lock और Views कहते हैं, तो आपका क्या मतलब है "उनके कमिटर और लेखक को अपडेट करने से इंकार कर दिया"? केवल काम करने वाले और लेखक हैं, पेड़ और ब्लब्स नहीं। साथ ही, आपके द्वारा चलाए गए फ़िल्टर-शाखा "पुराने नाम" नाम वाली फ़ाइलों के बारे में कुछ भी नहीं करेंगे। साथ ही, यह github यूआरएल पोस्ट करने में मदद कर सकता है। –

+0

संबंधित: [मैं गिट में किसी प्रतिबद्धता के लेखक को कैसे बदलूं?] (Http://stackoverflow.com/q/750172/456814)। –

उत्तर

4

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

git update-ref -d refs/original/refs/heads/master 

, यह अभी भी लेता है एक अतिरिक्त GitHub के लिए प्रतिबद्ध परिवर्तन को प्रतिबिंबित करने: एक बार जब आप यकीन है कि सब कुछ सुचारू रूप से चला गया है, तो आप के साथ समर्थित रेफरी निकाल सकते हैं। मैं रीडेमे, प्रतिबद्ध और पुश करने के लिए एक जगह या कुछ जोड़ दूंगा ... उसके बाद, जिथब परियोजना पृष्ठ पर सही लेखकों को प्रतिबिंबित करता है।

0

क्या आप लाइन के लेखक को निर्धारित करने के लिए गिटहब पर सटीक दृश्य उपयोग कर रहे हैं? शायद यह कैश किया गया है, या आप पुरानी प्रतिबद्धता SHA1 के लिए विशिष्ट कुछ देख रहे हैं।

आप जांच सकते हैं कि यह रेपो का ताजा क्लोन करके और git blame filename को उन दो फ़ाइलों के लिए जांच कर काम करता है। यदि यह सही लेखक दिखाता है, तो यह काम करता है।

संबंधित मुद्दे