Git: मेरी आखिरी प्रतिबद्धता देखें


388

मैं केवल उन फ़ाइलों को देखना चाहता हूं जो अंतिम प्रतिबद्ध थे, जैसा कि मैंने सूची में देखा था जब मैंने किया था git commit। दुर्भाग्य से खोज रहा है

git "last commit" log

Google में मुझे कहीं नहीं मिलता है। तथा

git diff HEAD^..HEAD

बेशक, मुझे इसकी आवश्यकता नहीं है, क्योंकि यह परिवर्तन की हिम्मत को भी कम कर देता है।


34
धन्यवाद, मैं वास्तव में सिर्फ जरूरत है git diff HEAD^..HEAD!
अमीन

जवाबों:


374

जैसा कि टिप्पणियों के माध्यम से निर्धारित किया गया है, यह प्रतीत होता है कि ओपी की तलाश है

$ git log --name-status HEAD^..HEAD

यह उस आउटपुट के बहुत करीब है जिसे आप प्राप्त करेंगे svn statusया svn log -v, जिसे तोड़फोड़ से गिट में आने वाले कई लोग परिचित हैं।

--name-statusयहाँ कुंजी है; के रूप में इस प्रश्न में अन्य लोगों द्वारा बताया गया है, आप उपयोग कर सकते हैं git log -1, git showऔर git diffउत्पादन का एक ही प्रकार प्राप्त करने के लिए। व्यक्तिगत रूप से, मैं git show <rev>व्यक्तिगत संशोधनों को देखते हुए उपयोग करना चाहता हूं ।


मैं स्वीकार करता हूं, टिप्पणियाँ मेरे लिए अपना प्रश्न क्लीयर बनाने का सबसे अच्छा तरीका नहीं हैं :) धन्यवाद माइकसेप
दान रोसेनस्टार्क

4
मुझे लगता है कि यह अंतिम प्रतिबद्धता देता है, नहीं? तो, के लिए मेरा आखिरी मैं क्या करना होगाgit log --stat --author nroose -n 1
nroose

1
और संक्षिप्त और Git शो --name-स्थिति --oneline साथ छोटा किया जा सकता
jasonleonhard

इतना स्पष्ट है! मुझे यह अनुमान लगाना चाहिए कि यह कुछ इतना सरल है क्योंकि यह उस तरह का प्रश्न है जो हर समय होता है।
स्कॉट बिग्स

1
बल पुश का उपयोग करने के मामले में यह कॉमैंड आपको नवीनतम (टाइमवेज) कमिट के बजाय अंतिम पैच दिखाएगा ... कुछ उपयोग मामलों में मुश्किल हो सकता है
Olix

207

Git शो का उपयोग करें :

git show --summary

यह बनाई या हटाए गए फ़ाइलों के नाम दिखाएगा, लेकिन परिवर्तित फ़ाइलों के नाम नहीं । git showआदेश उत्पादन प्रारूपों कि प्रतिबद्ध के बारे में जानकारी के विभिन्न प्रकार को दिखाने की एक विस्तृत विविधता का समर्थन करता है।


1
@jamessan git show --statकरीब है, लेकिन क्या कोई दृश्य नहीं है जहां फ़ाइल के आगे 'संशोधित' या 'जोड़ा' शब्द दिखाई देता है?
दान रोसेनस्टार्क

3
यदि आप केवल फाइलों के नाम (इससे भी कम --stat) चाहते हैं, तो आप भी देख सकते हैं --name-statusऔर --name-onlyस्विच कर सकते हैं।
माइक सेपलोविट

1
@ मायकेसिप, वास्तव में यही मेरी जरूरत है। यदि आप इसे एक उत्तर देते हैं तो मैं इसे सबसे अच्छा उत्तर दूंगा, क्योंकि यह मेरे लिए था। मैं उपयोग कर रहा हूँgit log --name-status HEAD^..HEAD
डैन रोसेनस्टार्क

यह अब तक की पेशकश का सबसे सरल समाधान है।
मैथ्यू


44

अंतिम प्रतिबद्ध देखने के लिए

git log -1

अंतिम 2 प्रतिबद्ध देखने के लिए

git log -2

आदि....


1
लेकिन सवाल ने कहा "... उन फ़ाइलों को देखना चाहते हैं जो अंतिम प्रतिबद्ध थे"
पीटर मोर्टेंसन

42

इसके लिए सबसे सरल कमांड है:

git show --name-only

जैसा कि यह अंतिम प्रतिबद्ध में सिर्फ फाइलों को सूचीबद्ध करता है और आपको संपूर्ण हिम्मत नहीं देता है

आउटपुट होने का एक उदाहरण:

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <Kylo@darkside.empire.gov>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       

7
के --name-statusबजाय पर विचार करें --name-only
एक्यूमेनस

5
वहीं समस्या है .. रक्षा ग्रिड के लिए साम्राज्य का उपयोग php!

3
सबसे अच्छा उदाहरण मैं stackoverflow पर देखा है! "वे कमिट नहीं हैं जिनकी आप तलाश कर रहे हैं।"
स्कॉट बिग्स


21

अंतिम प्रतिबद्ध परिवर्तन देखने के लिए

git show HEAD

या दूसरा अंतिम परिवर्तन देखने के लिए

git show HEAD~1

और आगे के लिए बस आवश्यक कम अनुक्रम संख्या के साथ ऊपर में '1' को बदलें।


15

जब आप कई कमिट करते हैं या एक रिपॉजिटरी को क्लोन / पुल करते हैं, तो आप देखना चाहते हैं कि क्या कमिट किए गए हैं। अपना प्रतिबद्ध इतिहास (अंतिम / हाल की पहली से पहली तक) देखने के लिए बस इन सरल समाधानों की जांच करें।

अंतिम वचन के लिए, बस इस कमांड को फायर करें git log -1:। अधिक रोचक बातों के लिए नीचे देखें -

  1. प्रतिबद्ध आईडी (SHA-1 चेकसम) देखने के लिए, लेखक का नाम <मेल आईडी>, समय के साथ दिनांक, और प्रतिबद्ध संदेश -

    git log
    
  2. कुछ और आँकड़े देखने के लिए, जैसे उस कमिट के दौरान सभी फ़ाइलों के नाम बदले गए और सम्मिलन / विलोपन की संख्या। कोड की समीक्षा करते समय यह बहुत काम आता है -

    git log --stat
    
  3. कुछ सुंदर प्रारूपों में कमिटमेंट देखने के लिए :) (इसके बाद कुछ प्रीलिफ्ट विकल्प हैं) -

    • यदि आपके पास समीक्षा करने के लिए बहुत सारे हैं, तो यह कमांड उन्हें एक साफ सिंगल लाइन में दिखाएगी:

      git log --pretty=oneline
      
    • अपनी कमिटी के संक्षिप्त, मध्यम, पूर्ण, या और भी अधिक विवरण देखने के लिए, क्रमशः उपयोग करें, -

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. आप formatविकल्प का उपयोग करके अपने स्वयं के आउटपुट स्वरूप का उपयोग भी कर सकते हैं -

    git log --pretty=format:"%an, %ae - %s"
    

    जहाँ% a - लेखक का नाम,% ae - लेखक ईमेल,% s - प्रतिबद्ध का विषय, आदि।

यह आपकी प्रतिबद्ध इतिहास के साथ मदद कर सकता है। अधिक जानकारी के लिए, यहां क्लिक करें


11
$ git diff --name-only HEAD ^ .. HEAD

या

$ git लॉग-name-only HEAD ^ .. HEAD

यही मुझे बहुत चाहिए। कैसे के बारे में कुछ कह रही है कि क्या यह संशोधित, जोड़ा या हटा दिया गया था? शायद एक पत्र के साथ, svn- शैली?
डैन रोसेनस्टार्क

1
इसे अब पा लिया है। git log --name-status HEAD^..HEAD
डैन रोसेनस्टार्क

2
इसके बजाय git log ... HEAD^..HEAD, यह उपयोग करने के लिए सरल git log ... -1 HEADया बेहतर नहीं है git show ... HEAD?
जैकब नार

Stackoverflow पोस्ट के एक जोड़े के माध्यम से ब्राउज़ करने के बाद, यह वह उत्तर है जिसकी मुझे आवश्यकता है। मुझे केवल फाइलें चाहिए थीं और कुछ नहीं। कोई प्रतिबद्ध सारांश नहीं, केवल नवीनतम प्रतिबद्ध से फाइलें। धन्यवाद!
भाग्यविद्या


4

केवल फ़ाइलों का उपयोग करने के लिए सूचीबद्ध करने का दूसरा तरीका है:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
या आप किसी भी दो प्रतिबद्ध आईडी का उपयोग कर सकते हैं


इससे होने वाले फायदे log?
दान रोसेनस्टार्क

यह मूल रूप से फाइलों को सूचीबद्ध करने का एक अलग तरीका है। मैं आमतौर पर तैनाती के लिए rsync के साथ इस गठबंधन
इस्माइल चेरी

0

यदि आप नवीनतम और सबसे बड़ी प्रतिबद्धताओं को खोजने के बारे में बात कर रहे हैं, तो आपने कुछ पहले के कमिट का चेक चेकआउट किया है ( और चेकआउट को निष्पादित करने से पहले HEAD के हैश को लिखना भूल गए हैं ) उपरोक्त में से अधिकांश आपको वापस नहीं मिलेगा जहां आपने शुरु किया। git लॉग - [कुछ #] केवल HEAD की CURRENT स्थिति से लॉग दिखाता है , जो जरूरी नहीं कि बहुत अंतिम प्रतिबद्ध (परियोजना की स्थिति) हो। चेकआउट HEAD को डिस्कनेक्ट करेगा और आपने जो भी चेक आउट किया है, उसे इंगित करेगा।

आप मूल प्रति को संदर्भित करने वाली प्रविष्टि तक पहुंचने तक पूरे गिट रिफ्लॉग को देख सकते हैं । BTW, यह भी काम नहीं करेगा यदि आप उस समय के बीच किए गए थे जब आपने प्रोजेक्ट को क्लोन किया था और जब आपने चेकआउट किया था। अन्यथा आप उम्मीद कर सकते हैं कि आपके स्थानीय मशीन पर आपके सभी आवागमन सर्वर पर हैं, और फिर पूरे प्रोजेक्ट को फिर से क्लोन करें।

उम्मीद है की यह मदद करेगा।


धन्यवाद, यह एक अच्छा बिंदु है लेकिन मूल प्रश्न बहुत सरल था और पहले से ही कई बार उत्तर दिया गया था।
दान रोसेनस्टार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.