पहले 10 git में लॉग इन करें


91

दो सवाल:

  1. शुरुआत से लेकर अंत तक पहले 10 कमिट को कैसे दिखाना है। (कोई शाखा नहीं)
  2. कमिट इंडेक्स को कैसे निर्दिष्ट करें और उसे लॉग करें। (दूसरा या तीसरा दिखाएं)

मुझे पता है कि कमिट को जोड़ने के लिए पेरेंट का उपयोग करें, अंत से शुरू करने के लिए कमिट को लॉग इन करना आसान है। पसंद:git log HEAD~10

लेकिन मुझे शुरू से अंत तक क्वेरी करने की आवश्यकता है, क्या यह संभव है?



@kostix उत्तर पर स्क्रॉल करें
मुहम्मद उमर

जवाबों:


60

बस एक लाइन प्रारूप के साथ सब कुछ लॉग इन करें और आउटपुट पूंछें:

git log  --pretty=oneline | tail -n 10 

महान! वही ढूंढ रहा है। Tks @CharlesB।
योहन झोउ

3
या, git rev-list HEAD | tail -n 10सूचीबद्ध करने के लिए 10 आईडी प्राप्त करने के लिए उपयोग करें, जिसे आप तब पसंद कर सकते हैं जो आपको पसंद है (एक-लाइन विधि तक सीमित नहीं)।
torek

16
tailलगता है कि मैं अपने git सांत्वना में प्राप्त करने के लिए अच्छा रंग खो देता हूं। एक पैरामीटर पास करना जैसे git log --oneline -10अन्य उत्तर में काम करता है जैसा कि मुझे उम्मीद थी।
जेम्स हल्स

4
यह स्पष्ट रूप से हार्ड-कोर यूनिक्स तरीका है, योग्य है। कृपया @kostix उत्तर देखें।
9301293

1
इस पद्धति का नकारात्मक पक्ष यह है कि मैं केवल अपने पुश किए गए कमिट्स देख सकता हूं।
जैक '

254
git log -10

संशोधन के अनुमान से मेल खाते हुए 10 नवीनतम आवागमन दिखाएंगे (एक लापता कल्पना का अर्थ है "सभी हिट")।

देखें पेज:

git help log

अनुभाग Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.

6
सरल, और tailआपके प्लेटफ़ॉर्म पर उपलब्ध होने पर निर्भर नहीं करता है।
दस

8
और गिट प्रारूपण / रंग के साथ खिलवाड़ नहीं करता है। यह
कुजीन जूल

10
ऐसा नहीं है जो ऑप चाहता था: वह first10 चाहता था , नहीं latest
टिमो

1
@ टिमो, संभवत: हाँ, लेकिन जैसा कि कहा गया है, व्याख्या के लिए खुला प्रश्न है, और बहुत सारे पेप्ले इन खुले मतभेदों के कारण मेरे उत्तर को समाप्त कर रहे हैं। इसलिए जब मैं तकनीकी रूप से आपसे सहमत हूं, तो इसे वैसे ही रहने दें, मुझे लगता है ;-) तकनीकी रूप से सही सुझावों में से, मुझे स्वीकृत उत्तर के लिए सबसे अधिक टिप्पणी पसंद है।
कोस्टिक्स

@kostix "शुरू से अंत तक पहले 10 कमिट को कैसे दिखाना है" जहाँ तक मेरा सवाल है "व्याख्या के लिए खुला नहीं है"। यह स्पष्ट रूप से पहले 10 के लिए पूछ रहा है, नवीनतम नहीं ।
बॉबी जैक

30

यहाँ मेरा दृष्टिकोण,

पहले 10 प्राप्त करने के लिए:

git log -n 10

-n नंबर है

अतिरिक्त करने के लिए अगले 10 प्रतिबद्ध पहले 10 छोड़ें:

git log --skip=10 -n 10

मुझे लगता है कि यह एकरस जवाब होना चाहिए। टेल का उपयोग करने के कारण
गिट

यह स्वीकृत उत्तर होना चाहिए। मेरे लिए एक आकर्षण की तरह काम करता है
Doogle

आप टेल का उपयोग करके कंसोल पर फ़ॉन्ट रंग खो देते हैं। यह सही उत्तर है
CESCO

14

अंतिम 10 प्राप्त करने के लिए:

git log HEAD~10..HEAD

उन्हें सबसे पुराने-से-सबसे नए ऑर्डर में पाने के लिए:

git log --reverse HEAD~10..HEAD

ध्यान दें कि यदि मर्ज हैं, तो यह 10 से अधिक कमिट दिखा सकता है; --first-parentयदि आप केवल प्रत्येक शाखा के पहले माता-पिता के माध्यम से पार करना चाहते हैं तो जोड़ें ।

अधिक विवरण के लिए, प्रलेखन देखें git rev-list


संपादित करें: आप पहले से ही "इतिहास की शुरुआत के निकट दिखाने के लिए" (फिर से, एक रेपो में कई गैर-कनेक्टेड कमिट डीएजी के बारे में कैविएट देखें) के ऊपर एक उपयोगी उत्तर प्राप्त कर चुके हैं। लेकिन आप यह भी कर सकते हैं, जैसे:

git log --no-walk `git rev-list HEAD | tail -n 10`

तथा:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

जिसके आधार पर आप परिणाम चाहते हैं।


आपके उत्तर के लिए tks। लेकिन मुझे पिछले 10 कमिट्स की जरूरत नहीं है लेकिन पहली है। विशिष्ट होने के लिए, यदि कमिट ABCDEFG (HEAD) है। एबीसी कैसे लॉग करें और इंडेक्स 2 द्वारा सी कैसे लॉग इन करें?
योहन झोउ

ओह! इस बात की कोई गारंटी नहीं है कि एक एकल "पहली प्रतिबद्ध" है, लेकिन अगर वहाँ है, तो लिंक देखें @CharlesB जोड़ा गया।
torek

तरीका काम हो सकता है। कोई प्राकृतिक तरीका? git log --pretty = oneline | wc -l git log HEAD ~ <नंबर माइनस एक या इंडेक्स>
योहन झोउ

जवाब के लिए धन्यवाद। यह वही है जो मुझे अपने git उपनामों में '-10' शैली के विकल्पों से बचने के लिए आवश्यक था। संख्या तर्क स्वीकार करते हैं।
vicTROLLA

11

सबसे अच्छा परिणाम दोनों के उत्तर के साथ आता है:

git log --pretty=oneline -10

1
धन्यवाद मैं इसे अपने टर्मिनल को भरने के बिना हाल ही में किए गए कमिट्स को प्रदर्शित करने के लिए एक git उपनाम के रूप में उपयोग करता हूं। मैंने उर्फ ​​को फोन किया lkj = log --pretty=oneline --abbrev-commit -10। अब मुझे एहसास हुआ कि यह ओपी के सवाल का जवाब नहीं देता है, लेकिन मैं यहां सरल नंबर स्विच की तलाश में आया हूं।
पॉल रौजीक्स

4

बस सब कुछ लॉग -1 रिवर्स का मतलब है एक लॉग सूची

git log  --reverse -1


0

क्योंकि ... अधिक विवरण: पी

  1. शुरुआत से लेकर अंत तक पहले 10 कमिट को कैसे दिखाना है। (कोई शाखा नहीं)
  2. कमिट इंडेक्स को कैसे निर्दिष्ट करें और उसे लॉग करें। (दूसरा या तीसरा दिखाएं)

द्वारा (कोई शाखा नहीं), आप reflogकिसी भी पूर्वज श्रृंखला के बजाय के बारे में पूछ सकते हैं । निम्नलिखित का उस शाखा से कोई लेना-देना नहीं है जिस पर आप हैं।

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -g है --walk-reflogs बजाय पूर्वजों की श्रृंखला चलने के लिए, फिर से आना प्रविष्टियों को दर्ज करें
  • |cut -d ' ' -f 2|tr -d ':' > logकेवल रिफ्लॉग कमिट इंडेक्स लॉग करने के लिए जोड़ें ।

निम्नलिखित वर्तमान में जाँच की गई शाखा के शुरुआती पूर्वजों को दिखाएगा।

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse आउटपुट उल्टे क्रम में करता है।
  • टूटने के बाद से -n 10या बस का उपयोग नहीं कर सकते-10--reverse
  • cat -n लाइन नंबर (कमिट इंडेक्स?) जोड़ता है


0

यदि कोई व्यक्ति केवल एक-लाइन लॉग से अधिक चाहता है:

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

जहां 11अंत में सेट किया जाना चाहिए1 आप चाहते हैं की संख्या की तुलना में अधिक ।

जैसा कि यहां बताया गया git log --reverse -n 10है कि जैसे ही आपको इसकी आवश्यकता होती है, काम नहीं करता है। ( मुझे लगता है कि आपको रिवर्स ऑर्डर में पहले 10 कमिट्स चुनने की क्षमता देने की जरूरत होगी या आखिरी 10 कमिट्स would)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.