मेलिंग सूची + git format-patch+ git applyलेखक उत्पन्न कर सकता है! = कमिटेटर
लिनक्स कर्नेल जैसी परियोजनाओं में जहां पैच हैं:
अलग-अलग लेखक और कमिटर के साथ एक ही नई प्रतिबद्धता उत्पन्न करना:
- लेखक कौन पैच लिखा है
- कमिटेटर वह है जो प्रोजेक्ट मेंटेनर है, और जिसने पैच को मर्ज किया है
उदाहरण के लिए देखें यह बेतरतीब ढंग से चयनित पैच और संबंधित प्रतिबद्ध:
GitHub और GitLab जैसे गिट वेब इंटरफेस लेखक उत्पन्न कर सकते हैं या नहीं!
चूंकि गिट (हब। लैब) एक ही मशीन पर अपस्ट्रीम और फोर्क रिपॉजिटरी दोनों को पकड़ते हैं, वे स्वचालित रूप से कुछ भी कर सकते हैं जो आप स्थानीय स्तर पर भी कर सकते हैं, जिनमें से कोई भी शामिल है:
एक मर्ज कमेट बनाएँ।
लेखक उत्पन्न नहीं करता है!
SHA या नई प्रतिबद्धता बरकरार रखता है, और एक नई प्रतिबद्धता बनाता है:
* Merge commit (committer == author == project maintainer)
|\
| * Feature commit (committer == author == contributor)
|/
* Old master (random committer and author)
ऐतिहासिक रूप से, GitHub पर यह पहली उपलब्ध विधि थी।
स्थानीय रूप से, इसके साथ किया जाता है git merge --no-ff।
यह प्रति पुल अनुरोध के लिए दो हिट बनाता है, और गिट इतिहास में एक कांटा रखता है।
के शीर्ष पर रिबास master
GitHub ने कमिट == जो भी मर्ज बटन दबाया है, को कमिट करने के लिए हैक करता है। यह अनिवार्य नहीं है, और डिफ़ॉल्ट रूप से स्थानीय रूप से भी नहीं किया जाता है git rebase, लेकिन यह परियोजना अनुरक्षक को जवाबदेही देता है।
गिट का पेड़ अब दिखता है:
* Feature commit (committer == maintainer, author == contributor)
|
* Old master (random committer and author)
जो git applyईमेल पैच की तरह ही है ।
वर्तमान में GitHub पर:
- आप मर्ज बटन पर ड्रॉपडाउन के माध्यम से विलय करते समय विधि का चयन करें
- मालिक द्वारा रेपो सेटिंग्स पर तरीकों को सक्षम या अक्षम किया जा सकता है
https://help.github.com/articles/about-merge-methods-on-github/
नई कमेटी का कमिटेटर कैसे सेट करें?
सबसे अच्छा मैं पा सकता है कि कम्बिटर को ओवरराइड करने के लिए पर्यावरण चर का उपयोग कर रहा था:
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author 'a <a>'
किसी दिए गए कमिट का कमिटमेंट और डेट कैसे प्राप्त करें?
केवल लेखक डेटा डिफ़ॉल्ट रूप से दिखाता है git log।
कमिट तिथि देखने के लिए आप या तो:
उस के लिए विशेष रूप से लॉग प्रारूप:
git log --pretty='%cn %cd' -n1 HEAD
जहां cnऔर cdके लिए खड़े हो Committer NameऔरCommitter Date
fullerपूर्वनिर्धारित प्रारूप का उपयोग करें :
git log --format=fuller
इसे भी देखें: 'कमिट डेट' दिखाने के लिए 'git लॉग' कैसे कॉन्फ़िगर करें
निम्न स्तर पर जाएं और संपूर्ण प्रतिबद्ध डेटा दिखाएं:
git cat-file -p HEAD
नई कमेटी की कमिट डेट कैसे सेट करें?
git commit --date केवल लेखक की तिथि निर्धारित करता है: सबसे कम तारीख के लिए जो मुझे मिल सकता है वह पर्यावरण चर के साथ था:
GIT_COMMITTER_DATE='2000-01-01T00:00:00+0000' git commit --date='2000-01-01T00:00:00+0000'
यह भी देखें: लेखक और कमिट के बीच अंतर क्या है?
Git स्टोर लेखक बनाम आंतरिक रूप से कमिट कैसे करता है?
देख: फ़ाइल कमिट ऑब्जेक्ट का प्रारूप क्या है?
असल में, प्रतिबद्ध एक पाठ फ़ाइल है, और इसमें दो पंक्ति अलग फ़ील्ड हैं:
author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}
इससे यह स्पष्ट होता है कि दोनों प्रतिबद्ध वस्तु में दो पूरी तरह से स्वतंत्र डेटा प्रविष्टियां हैं।