git: कमेंट मेसेज में कमेंट के रूप में शो इंडेक्स भिन्न होता है


109

जब git commitसंदेश संपादक खुला एक संक्षिप्त स्थिति से पता चलता है, कुछ इस तरह से:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is ahead of 'origin/master' by 26 commits.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   Showcase/src/com/gigantt/BorderArea.mxml
#   modified:   Showcase/src/com/gigantt/Client.mxml
#   modified:   Showcase/src/com/gigantt/GraphItem.mxml
#

मैं यह दिखाने के लिए भी कैसे जुदा हो सकता हूँ जो प्रतिबद्ध होने के लिए अलग है? मुझे पता है कि यह एक लंबा अंतर हो सकता है, लेकिन फिर भी .. इतना उपयोगी।


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

1
क्या यह आपको कुछ जानकारी प्रदान करता है जो आपको 'git log -p' के साथ नहीं मिलती है?
जैद श्नाइडर

12
@ मर्क: ओपी चाहता है कि बाहर टिप्पणी की जाए। यह डिफॉल्ट कमेंट-आउट हिंट का अधिक वर्बोज़ संस्करण है। @ जेड: ओपी प्रतिबद्ध संदेश टेम्पलेट में यह जानकारी चाहता है। हाँ git diff --cached, इसे उत्पन्न करता है, लेकिन यदि आप इसे हर बार चाहते हैं तो एक अलग कमांड क्यों चलाते हैं?
Cascabel

1
यदि आप आश्चर्यचकित हैं , तो github.com/tpope/vim-fugitive/issues/149 भगोड़े के लिए इसका अनुसरण कर रहा है। यदि आप नहीं हैं, तो आपको होना चाहिए।
लाकराव

जवाबों:


149

के लिए --verbose(या -v) ध्वज, git commitजो भी प्रतिबद्ध होगा, उसके अंतर को प्रदर्शित करेगा:

git commit --verbose


3
ऐसा लगता है कि इस फ़ॉर्म को टिप्पणी नहीं दी गई है, इसे डिफ़ॉल्ट रूप से टिप्पणी करने का कोई तरीका है?
इदन के

25
विस्तृत संदेशों को टिप्पणी करने की आवश्यकता नहीं है, ईडन; git उन्हें अनदेखा करना जानता है जैसे कि वे टिप्पणियाँ हैं।
ब्रैंडन रोड्स

@BrandonRhodes कैसे बिट बिट को बताने के लिए अंतर को अनदेखा करें? मेरे पास अलग प्रारूप में कुछ अतिरिक्त लाइनें उत्पन्न करने के लिए एक स्क्रिप्ट है, लेकिन यह पहली पंक्ति से अलग हो गई है
डेनिस सी

2
@IdanK, कमिट मैसेज टेंप्लेट में टिप्पणी नहीं की जा रही डिफरेंट लाइन्स का एक फायदा यह है कि vim कोड कलरिंग डिफरेंट कंटेंट पर काम करता है (यदि आपके पास git फाइल टाइप एडिशन vim के लिए इंस्टॉल है)। अगर इन अलग लाइनों पर टिप्पणी की गई, तो यह रंग काम नहीं करेगा।
क्रिस्टोफर

1
मेरी पिछली टिप्पणी की अवहेलना करें; अपराधी EditorConflig प्लगइन "लाइन के ऊपर लाइन को टच न करें" के साथ गड़बड़ कर रहा है।
डैनियल लियुज़ी

31

एलन के उत्तर का उत्तर देने के लिए पर्याप्त प्रतिष्ठा नहीं है, लेकिन ईडन और किसी और के लिए मैंने अभी इसे आज़माया है और प्रतिबद्ध संदेश में अलग-अलग पंक्तियों को स्पष्ट रूप से टिप्पणी नहीं की गई है। हालांकि, वे अभी भी अंतिम प्रतिबद्ध संदेश में दिखाई नहीं देते हैं, अच्छाई का धन्यवाद।

$ git commit --verbose

मेरे संपादक में:

Feeling a bit pessimistic now.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#
diff --git a/README b/README
index af5626b..c62237e 100644
--- a/README
+++ b/README
@@ -1 +1 @@
-Hello, world!
+Goodbye, world!

(ध्यान दें कि अलग #लाइनों से पहले की कमी है )

और फिर वास्तविक प्रतिबद्ध संदेश:

$ git log -n 1
commit ad21a2655ef6d8173c2df08dc9893055b26bc068
Author: Tom Jakubowski <tom@crystae.net>
Date:   Thu Oct 27 19:12:54 2011 -0700

    Feeling a bit pessimistic now.

जाहिर है, git showअभी भी अंतर दिखाएगा, लेकिन ऐसा इसलिए है क्योंकि यह हमेशा करता है। :)


2
गिट के नए संस्करणों में (मेरे पास 2.3 है) अंतर को निम्नलिखित पंक्ति के साथ उपसर्ग किया गया है: # ------------------------ >8 ------------------------- मुझे लगता है कि गिट स्वचालित रूप से उसके बाद दिखाई देने वाली सभी चीजों को हटा देता है।
Jan Warchoł

कम से कम 2.4.1 के रूप में, मैं देखता हूं: # ------------------------> 8 ------------ ------------ # ऊपर की लाइन को न छुएं। # नीचे सब कुछ हटा दिया जाएगा। इसलिए यह पुष्टि करता है कि आप क्या सोच रहे थे।
एंथनी पनोजो

@AnthonyPanozzo यह 2.5.3 पर टूट गया है। "ऊपर की रेखा को स्पर्श न करें" मार्कर के बावजूद, पूर्ण अंतर वैसे भी प्रतिबद्ध संदेश में समाप्त होता है।
डैनियल लियुज़ी

मेरे लिए 2.8.2 में काम करता है
एंथोनी पानोजो

3
कमांड लाइन से इसे सेट करने के लिए:git config --global commit.verbose true
टेलर एड्मिस्टन

10

यह व्यवहार हमेशा मौजूद है यह सुनिश्चित करने का सबसे सरल तरीका है कि इस अनुभाग को अपनी git configफ़ाइल में जोड़ें :

[commit]
  verbose = true

आपको वास्तव में अलग मोड में (सिंटैक्स हाइलाइटिंग के लिए) अपने संपादक को कॉन्फ़िगर करने की आवश्यकता हो सकती है। मैं नोटपैड 2 को विंडोज नोटपैड प्रतिस्थापन के रूप में उपयोग करता हूं, और -s diffरंग योजना को उचित रूप से सेट करता हूं (हटाए गए लाइनों के लिए लाल, आदि):

[core]
  editor = C:/Windows/system32/notepad.exe -s diff

9

मैंने निम्नलिखित पंक्तियों को .गित / हुक / तैयार-प्रतिबद्ध-एमएस में डाल दिया है ताकि एक टिप्पणी की जा सके कि:

#!/bin/bash

if [ "$2" == "" ] ; then
    git diff --staged -p --stat 2> /dev/null | awk '{ printf "#"; print}' >> "$1"  2>/dev/null
fi

इस तरह आप केवल अंतर नहीं बता सकते हैं, बल्कि अधिक जानकारी भी जोड़ सकते हैं (जैसे कि स्टेट ऑप्शन करता है)।

संपादित करें: इसके अलावा git प्रतिबद्ध --verbose इस संदेश के बिना इस तरह से प्रतिबद्ध संदेश में शामिल नहीं है।


4
टिप्पणी करने के बजाय आप # ------------------------ >8 ------------------------अधिक git-scm.com/docs/git-commit#git-commit-sc कैंची का
AB

8

यदि आप चाहते हैं कि आपके द्वारा किए गए फ़ॉर्म को हमेशा देखें, तो आप अपनी ~/.gitconfigफ़ाइल में निम्न जोड़ सकते हैं :

[alias]
commit = commit -v

यद्यपि, आप कर सकते हैं - आप किस संस्करण पर हैं? यह मेरे लिए w / संस्करण 2.0.0
rusty

2
आपका उत्तर आशाजनक लगता है लेकिन मेरे लिए भी काम नहीं करता है। मैंने कोशिश की git config --global alias.commit 'commit -v'और उर्फ ​​जोड़ा गया जैसे आपने सुझाव दिया था - बस स्वचालित रूप से। मैंने एक और उपनाम बनाया cv, जो उम्मीद की तरह काम करता है। उबंटू 15.10 में पैक किया गया मेरा git संस्करण 2.5.0 है।
डैनियल बॉहेर

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