जाहिरा तौर पर यह :
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
फ़िल्टर कमिट तिथि के आधार पर चलता है । मैं एक निर्दिष्ट लेखक तिथि सीमा के लिए इसे कैसे दिखा सकता हूं?
जाहिरा तौर पर यह :
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
फ़िल्टर कमिट तिथि के आधार पर चलता है । मैं एक निर्दिष्ट लेखक तिथि सीमा के लिए इसे कैसे दिखा सकता हूं?
जवाबों:
आप अकेले नहीं, कम से कम Git में नहीं। (इस सवाल पर जाकर दूसरों के लिए अनुस्मारक: इसके बारे में नहीं है को देखने के लिए लेखक की तारीख, इसके बारे में द्वारा प्रतिबद्ध के चयन लेखक की तारीख, एक ला --since/ --afterऔर --until/ --beforeइन चयनकर्ताओं का उपयोग। Committer तिथि, नहीं लेखक की तारीख एक चरम उदाहरण एक प्रतिबद्ध के रूप में विचार करें। "अभी" बना दिया गया है, ताकि इसकी कमिटरी डेट 2000 के दशक में हो, लेकिन लेखक-दिनांक फ़ील्ड में वर्ष 1999 में किसी दिन बैकडेट किया गया। यदि आपकी चयन सीमा "सदी के मोड़ के पास किसी भी समय" है, तो आप डी -इस विकल्प को चुनें, क्योंकि इसकी कमिटरी डेट "अब" है, 1999 से आगे एक दशक से अधिक।)
मैं इसे गिट में एक छोटा सा बग मानता हूं: आपको यह अनुरोध करने में सक्षम होना चाहिए कि यह लेखक की तारीख के क्षेत्र का उपयोग करें कहीं भी आप अनुरोध कर सकते हैं कि यह कमिट तिथि क्षेत्र का उपयोग करता है। लॉग फॉर्मेटिंग के साथ यह आसान है , क्योंकि हमारे पास %adऔर %cdपसंद है, लेकिन प्रतिबद्ध चयन के साथ असंभव है । हमारे पास जो निकटतम है वह git rev-listलेखक-तिथि (सामान्य टोपो-छँटाई के भीतर) द्वारा क्रमबद्ध हो सकता है।
में एक वैश्विक स्विच git rev-list, की तरह --use-author-date, एक साधारण पैच के रूप में काम करेगा, और भी Git में जोड़ने के लिए मुश्किल नहीं होगा, लेकिन मुझे लगता है कि यह है करने के लिए बेहतर होगा --min-author-ageऔर --max-author-ageया इसी तरह की है, और एक "प्रकार लेखक तिथि के अनुसार" झंडा (स्वतंत्र सामान्य --topo-orderध्वज, ताकि दोनों झंडे स्थापित करने का समान प्रभाव हो --author-date-order)।
वर्कअराउंड के रूप में, आप सभी संभावित-दिलचस्प कमिट्स को सूचीबद्ध कर सकते हैं ( git rev-listजैसे या समतुल्य, जैसे git log: दिनांक फ़िल्टर के अलावा, जो कुछ भी निर्दिष्ट करता है वह संभावित रूप से दिलचस्प बनाता है: इस मामले में बस यही है --all) और अपने सभी लेखक-तिथि फ़ील्ड निकालें (के साथ git log --format=%atया जो भी हो), उसके बाद कमिट आईडी की सूची की अपनी छंटाई करें, फिर शेष प्रतिबद्ध आईडी को फिर से जमा करें git log --no-walk। लेकिन यह सबसे अच्छा दर्दनाक है। अधिक के लिए awk का उपयोग करते हुए टिम बेगेलीसेन का उत्तर देखें ।
शायद मुझे कुछ याद आ रहा है, लेकिन यह पर्याप्त नहीं होगा?
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"
यहां भी देखें
%adनिर्देश 2016 से पहले आप इस लेखक-इन 1999 के लिए प्रतिबद्ध है, भले ही वह यह है कि जिस तरह से दिखाई देगा!
आप कर सकते हैं ।
लेकिन जैसा कि @torek ने उल्लेख किया है, आप शुद्ध Git के साथ ऐसा करने में सक्षम नहीं हो सकते हैं। एक विकल्प पाइप से कुछ बहुत प्रारूप उत्पादन होगा git logमें awkहै, और वहाँ लेखक तिथि की जांच:
git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'
यहां, %adआईएसओ प्रारूप में लेखक की तारीख %aNदेता है , और लेखक का नाम देता है।
ऊपर टिम बेगलेइसेन के जवाब से प्रेरित है।
git log --all --date=iso --pretty=format:'%ad%x08%aN %s' | grep 2020-06-09 | sort -u
मुझे जो चाहिए था वो किया। मुझे लेखक की तारीख चाहिए, तारीख नहीं, क्योंकि मैं बहुत पीछे हटता हूं और स्क्वैश करता हूं। लेकिन मैं आयात की तारीखों पर महत्वपूर्ण तारीख रखता हूं।
इससे संबंधित, मेरे पास एक छोटा सहायक है जो मुझे लेखक के ईमेल को रीसेट करने की अनुमति देता है लेकिन मूल लेखक की तारीख को ध्यान में रखते हुए। --reset- लेखक डिफ़ॉल्ट रूप से लेखक की तारीख को अधिलेखित करता है।
https://github.com/mathieujobin/git-scripts/blob/master/bin/git-reset-author-but-not-date
ऊपर दिए गए git लॉग पर, जब जरूरत हो, आप %Hgitsha प्राप्त करने के लिए जोड़ सकते हैं
git log --all --date=iso --pretty=format:'%ad - %aN : %s' | grep 2020-09 | sort -u