Git में निष्पादित कमांड का इतिहास या लॉग


96

क्या कोई तरीका है जो मैं विंडोज़ के तहत Git में उपयोग किए गए आदेशों का ट्रैक रख सकता हूं? मैं उन सभी आदेशों को देखना चाहता हूं जो मैंने अपने भंडार पर लागू किए हैं।

मैं कमांड इतिहास के माध्यम से वापस जाने में सक्षम होना चाहता हूं और कमांड का पता लगाता हूं जो एक समस्या हुई।

कमिट्स का इतिहास देखना एक बात होगी, लेकिन अन्य कार्यों के इतिहास को रखने के लिए जैसे कि एक शाखा बनाना या रिमोट जोड़ना, क्या ये ट्रैक किए गए हैं?


3
यह थोड़ा हटकर है, लेकिन यदि आप गौर करें .git/logs, तो आपको इतिहास दिखाई देगा कि प्रत्येक शाखा ने किस प्रतिबद्धता की ओर संकेत किया है।
नियुकि

1
@Nayuki चूंकि pushआईएनजी एक स्थानीय शाखा की स्थिति को नहीं बदलता है, इसलिए reflogजाहिरा तौर पर स्टोर नहीं होता है push, इसलिए .git/logs/refs/remotes/*/*आपके pushइतिहास को देखने का एकमात्र तरीका है ।
काइल स्ट्रैंड

जवाबों:


-8

git कमिट में परिवर्तन दिखाएगा जो सूचकांक को प्रभावित करता है, जैसे git rm। यह आपके द्वारा निष्पादित सभी git कमांड के लॉग को स्टोर नहीं करता है।

हालाँकि, बड़ी संख्या में git कमांड किसी तरह से इंडेक्स को प्रभावित करते हैं , जैसे कि नई ब्रांच बनाना। ये बदलाव प्रतिबद्ध इतिहास में दिखाई देंगे, जिसे आप देख सकते हैं git log

हालांकि, ऐसे विनाशकारी परिवर्तन होते हैं जो गिट ट्रैक नहीं कर सकते हैं, जैसे कि git reset

इसलिए, आपके प्रश्न का उत्तर देने के लिए, git gitआपके द्वारा रिपॉजिटरी में निष्पादित कमांड के निरपेक्ष इतिहास को संग्रहीत नहीं करता है। हालांकि, यह अक्सर संभव है कि आप प्रतिबद्ध इतिहास के माध्यम से किस कमांड को निष्पादित करें।


2
वास्तव में, सही उत्तर के रूप में, यह उल्लेख करता है। "इतिहास" निष्पादित किए गए आदेशों की सूची दिखाता है (स्थापना के बाद से)।
उमेश। एक भट

2
खोल भंडार इतिहास, लेकिन नहीं Git करता है, है ना?
एलेक्स

3
@ उमेशभाट git historyउदाहरण के लिए उपयोगी होगा, यह देखने के लिए कि कौन सी कमांड को किसी विशेष क्लोन में निष्पादित किया गया है ।
काइल स्ट्रैंड

5
git reflogतुम क्या चाहते हो नीचे उत्तर देखें।
18

3
@ cp.engr: ओपी गिट कमांड्स के इतिहास के लिए कहता है, न कि कमिट कमिट्स। यह उत्तर बताता है कि git से कमांड्स का उल्लेख किया गया है, जो बहुत ही कठिन काम है और हमेशा संभव नहीं है। git reflogवास्तव में आदेशों को स्वयं दिखाता है। इसके अलावा, बीटीडब्लू, शेल केवल कमांड कमांड का अनुमान लगाने के लिए थोड़ा अधिक सीधा तरीका है, लेकिन एक गिट रेपो को कई शेल द्वारा छुआ जा सकता है। यह पूछना बेहतर है कि क्या कमांड का उपयोग किया गया था।
combinatorist

183

आप इतिहास को git-reflog ( उदाहरण के लिए ) के साथ देख सकते हैं :

git reflog

18
@PauAI git reflog उन सभी पदों को दिखाएगा जो आपके HEAD द्वारा अनुसरण किए जा रहे हैं, यह वास्तव में सभी git कमांड नहीं दिखाएगा। Git कमांड्स जो सिर को नहीं हिलाती हैं (उदाहरण के लिए git branch -D my_precious_branch) वहां नहीं दिखाई देंगी।
योनातन

@ योनातन, क्या आप इसे प्राप्त नहीं कर सकते git reflog --all?
combinatorist

2
@combinatorist एक रिमोट जोड़ने का प्रयास करता है (जैसा कि ओपी ने उदाहरण के लिए दिया था) git remote add foo bar:। यह इसमें दिखाई नहीं देगा git reflog --all, क्योंकि यह HEAD पॉइंटर को संशोधित नहीं करता है।
योनातन

git reflogपैरामीटर के git statusसाथ या इसके बिना, जैसे मुझे कमांड नहीं दिखाते हैं --all
लॉरेंज

62

आपके शेल इतिहास में आपकी कमांड का एक लॉग उपलब्ध हो सकता है।

history

यदि निष्पादित कमांड्स की सूची आपके द्वारा नहीं देखी जाती है, तो सूची को एक फ़ाइल में निर्यात करें।

history > path/to/file

आप निर्यात किए गए डंप को केवल "git" के साथ कमांड दिखा सकते हैं, जिससे इसे grep के साथ पाइपिंग कर सकते हैं

history | grep "git " > path/to/file

इतिहास में इस तरह से स्वरूपित लाइनें हो सकती हैं

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

संख्या का उपयोग करके आप विस्मयादिबोधक चिह्न के साथ कमांड को फिर से निष्पादित कर सकते हैं

$ !518
git status -s

8

आप CentOS या किसी अन्य लिनक्स स्वाद उपयोग कर रहे हैं तो बस करना Ctrl+ Rशीघ्र और प्रकार में git

यदि आप मारते रहते हैं Ctrl+ तो Rयह आपके इतिहास के माध्यम से शुरू होने वाले आदेशों के लिए एक रिवर्स खोज करेगाgit


7

historyअपने टर्मिनल में टाइप करें। यह तकनीकी रूप से नहीं है, लेकिन मुझे लगता है कि यह वही है जो आप चाहते हैं।


6

यदि आप Windows PowerShell का उपयोग करते हैं, तो आप "git" और F8 टाइप कर सकते हैं। अपने सभी git कमांड के माध्यम से F8 को साइकल पर दबाते रहें।

या, यदि आप cygwin का उपयोग करते हैं, तो आप ^ R के साथ एक ही काम कर सकते हैं।


सामान्य विंडोज़ सत्र में आप F7 कुंजी का उपयोग कर सकते हैं एक छोटी सी खिड़की प्राप्त करने के लिए जो आपको उस सत्र में दर्ज की गई सभी कमांडों की एक सूची प्रदान करती है
milso

0

मुझे पता चला कि विंडोज़ उपयोगकर्ताओं के अंतर्गत मेरे "होम" फ़ोल्डर में git bash "2.24.0.windows.2" के मेरे संस्करण में, उस फ़ोल्डर में कोई फ़ाइल एक्सटेंशन नहीं के साथ ".bash-history" नामक एक फ़ाइल होगी। यह केवल आपके द्वारा बैश से बाहर निकलने के बाद बनाया गया है।

यहाँ मेरे कार्यप्रवाह है:

  1. बैश टाइप करने से पहले "इतिहास >> history.txt" [ENTER]
  2. बैश प्रॉम्प्ट से बाहर निकलें
  3. Run कमांड बॉक्स खोलने के लिए Win + R को दबाए रखें
  4. शेल दर्ज करें: प्रोफ़ाइल
  5. यह पुष्टि करने के लिए कि मेरा पाठ जोड़ा गया है, "history.txt" खोलें
  6. टाइमस्टैम्प में प्रवेश करने के लिए एक नई लाइन प्रेस [F5] पर
  7. इतिहास टेक्स्टफ़िल को सहेजें और बंद करें
  8. ".Bash-history" फ़ाइल को हटाएं ताकि अगला सत्र नया इतिहास बनाए

यदि आप वास्तव में अंक चाहते हैं तो मुझे लगता है कि आप यह सब करने के लिए एक बैच फ़ाइल बना सकते हैं लेकिन यह मेरे लिए काफी अच्छा है। आशा है कि यह किसी की मदद करता है।

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