2012-10-24 17 views
31

मैं सोच रहा था कि पिछली बार गिट में मैंने क्या किया है, उससे पहले (-s) पर हस्ताक्षर कैसे करें?गिट साइन ऑफ पिछले काम करता है?

+0

जांच http://schacon.github.com/git/git-commit.html –

+0

संभव डुप्लिकेट: यहाँ, Gentoo Linux से रॉबिन जॉनसन के लिए धन्यवाद मेरे सभी पिछले unpushed प्रतिबद्ध करने के लिए हस्ताक्षर जोड़ने के लिए एक चाल है http://stackoverflow.com/questions/1962094/what-is-the-sign-off-feature-in-git- –

+1

के लिए मुझे आश्चर्य है कि यह ऐसा करने के लिए विडंबनापूर्ण रूप से असुरक्षित नहीं है। आपको कम से कम साइन इन करके "मैं दावा करता हूं कि पिछले काम सुरक्षित हैं"।लेकिन अगर आपने उन्हें क्लोन किया है, आदि, और आप इन पर वास्तविक जांच नहीं करते हैं, तो आप इस तरह कुछ बताते हैं जिसे आप चेक नहीं कर सकते। एक हैकर किसी भी तरह एक प्रतिबद्धता में हेरफेर की कल्पना करो। हालांकि हस्ताक्षर करना वास्तव में किसी को बाद के चरण में प्रतिबद्धता से छेड़छाड़ से रोकता है। लेकिन शायद आपको इसे संदेश में जोड़ना चाहिए? –

उत्तर

46

signoff करने के लिए पिछले करने, का उपयोग संशोधन विकल्प:

Git --signoff

6

साइन-ऑन को ध्यान में रखते हुए प्रतिबद्ध संदेश को संशोधित करने के लिए, git filter-branch का उपयोग करने के लिए इसका उपयोग किया जाता है।

git filter-branch --msg-filter \ 
    "cat - && echo && echo 'Signed-off-by: Dan McGee <[email protected]>'" \ 
    HEAD 

या, निम्नलिखित Curt J. Sampson के suggestion, git interpret-trailers का उपयोग कर ("git filter-branch magic" से उदाहरण):

git config trailer.sign.key "Signed-off-by" 
git filter-branch --msg-filter \ 
    "cat - && echo && git interpret-trailers --trailer 'sign: 'Signed-off-by: Dan McGee <[email protected]>'" \ 
    HEAD 

चेतावनी: यह आपके मौजूदा प्रतिबद्ध के SHA1 बदल जाएगा, और आपको परिणाम को पुश करने के लिए मजबूर होना पड़ सकता है, जो कि आपके काम पहले से ही दूसरों द्वारा साझा किए जाने पर समस्याग्रस्त हो सकता है।

+0

'हस्ताक्षर-बंद-द्वारा:' या हाथ से अन्य ट्रेलरों को जोड़ने के बजाय 'गिट फ़िल्टर-शाखा - एमएसजी-फ़िल्टर'' के साथ 'गिट व्याख्या-ट्रेलर' का उपयोग करने पर विचार करें। यह आपको, उदाहरण के लिए, ट्रेलरों को डुप्लिकेट करने से बचने देगा। –

+0

@ CurtJ.Sampson हाँ! धन्यवाद। मैं सचमुच उस दस्तावेज को दस्तावेज कर रहा था: https://stackoverflow.com/a/41361273/6309। – VonC

+0

@ CurtJ.Sampson मैंने तदनुसार जवाब में संशोधन किया है। – VonC

10

--amend प्रतिबद्ध एक -S के साथ पुराने प्रतिबद्ध फिर से करना इस एक का प्रयास करें:

git filter-branch -f --commit-filter 'git commit-tree -S "[email protected]"' HEAD 

उसके बाद, आपको git push -f पर जाना होगा। लेकिन सावधान रहें, प्रतिबद्ध आईडी बदल जाएगी और अन्य लोग सिंक से बाहर हो जाएंगे।

+1

यह सभी काम करता है, सही है? मैं केवल अंतिम एक्स काम कैसे कर सकता हूं? –

+5

@ अकोसवंद्रा यदि आप अभी भी एक उत्तर की तलाश में हैं: '' git filter-branch -f --commit-filter 'git commit-tree -S "$ @"' HEAD ~ X..HEAD'', जहां एक्स है अंतिम एक्स की संख्या है। जैसे पिछले 2 कामों के लिए: 'गिट फ़िल्टर-शाखा-एफ - कमिट-फ़िल्टर 'गिट प्रतिबद्ध-पेड़-एस" $ @ "' हेड ~ 2.। हेड'' –

1

मेरे लिए सिर्फ हस्ताक्षर करने के लिए, वास्तव में github पर मेरी प्रतिबद्धता को सत्यापित नहीं किया था।

समाधान है कि मेरे लिए काम किया है वापस जा रहा है, और फिर प्रत्येक -S

git commit --amend -S 

इसके अलावा के साथ प्रतिबद्ध है, तो आप अपने लिए प्रतिबद्ध वास्तव में हस्ताक्षर किया गया है की जाँच करें, और आपके ईमेल/नाम बस संलग्न नहीं है, इस आदेश

git show HEAD --show-signature 

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

git config --global user.name "FULL NAME" 
2

भविष्य में

git commit --amend --author="FULL NAME <email>" -S 

और उपयोगकर्ता नाम के लिए भी सेट पूरा नाम मैं एक ऐसी ही समस्या हुई।

$ git pull && git rebase --gpg-sign --force-rebase origin/master && git push --signed 
Already up-to-date. 
Current branch master is up to date, rebase forced. 
First, rewinding head to replay your work on top of it... 
Applying: sci-biology/KING: new package 
Applying: dev-lang/yaggo: version bump, fix install procedure 
Applying: sci-libs/htslib: version bump 
Applying: sci-biology/bcftools: version bump 
Applying: sci-biology/samtools: version bump 
Applying: sci-biology/libBigWig: new release with io.h renamed to bigWigIO.h 
Applying: sci-biology/MaSuRCA: add more URLs to HOMEPAGE 
Applying: sci-biology/SPAdes: update comments on bundled dev-libs/boost 
Applying: sci-biology/khmer: added a comment how to proceed with src_compile() 
Applying: sci-biology/picard: version bump 
Applying: sci-biology/ruffus: pint EGIT_REPO_URI to the archive URL of code.google.com 
Applying: sci-biology/vcftools: the 0.1.15_pre release was just renamed to 0.1.15 by upstream 
Applying: sci-biology/nanopolish: new package 
Applying: sci-biology/libBigWig: version bump 
Counting objects: 75, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (75/75), done. 
Writing objects: 100% (75/75), 14.51 KiB | 0 bytes/s, done. 
Total 75 (delta 55), reused 0 (delta 0) 
remote: To github.com:gentoo/sci.git 
remote: 29c5e3f5d..b37457700 master -> master 
To git+ssh://git.gentoo.org/proj/sci.git 
    29c5e3f5d..b37457700 master -> master 
$ 
संबंधित मुद्दे