एक विशिष्ट गिट कमिट में सभी फाइलों को सूचीबद्ध करना

एक विशिष्ट गिट कमिट में सभी फाइलों को सूचीबद्ध करना
Shell

गिट कमिट फ़ाइल लिस्टिंग को समझना

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

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

आज्ञा विवरण
git diff-tree किसी कमिट की ट्री संरचना को दिखाने के लिए उपयोग किया जाता है, किसी दिए गए कमिट में भिन्न जानकारी के बिना परिवर्तन प्रदर्शित किया जाता है।
--no-commit-id फ़ाइल सूची को सरल बनाते हुए, आउटपुट से कमिट आईडी को हटाने के लिए git diff-tree के साथ विकल्प का उपयोग किया जाता है।
--name-only अतिरिक्त विवरण के बिना, केवल प्रभावित फ़ाइलों के नाम प्रदर्शित करने का विकल्प।
-r यह सुनिश्चित करने के लिए पुनरावर्ती विकल्प कि नेस्टेड निर्देशिकाओं सहित, कमिट में सभी फ़ाइल परिवर्तन सूचीबद्ध हैं।
subprocess.run पायथन बाहरी कमांड चलाने और एक स्क्रिप्ट के भीतर आगे की प्रक्रिया के लिए उनके आउटपुट को कैप्चर करने का कार्य करता है।
stdout=subprocess.PIPE Subprocess.run द्वारा निष्पादित कमांड के मानक आउटपुट को कैप्चर करने का विकल्प।
stderr=subprocess.PIPE त्रुटि प्रबंधन के लिए उपयोगी, सबप्रोसेस.रन द्वारा निष्पादित कमांड की मानक त्रुटि को पकड़ने का विकल्प।
check=True यदि सबप्रोसेस.रन द्वारा निष्पादित कमांड एक गैर-शून्य निकास कोड लौटाता है तो अपवाद बढ़ाने का विकल्प।

Git कमिट फ़ाइल लिस्टिंग स्क्रिप्ट की विस्तृत व्याख्या

प्रदान की गई शेल स्क्रिप्ट एक विशिष्ट Git कमिट में सभी फ़ाइलों को सूचीबद्ध करने का एक सीधा समाधान है। इसकी शुरुआत स्क्रिप्ट में दिए गए पहले तर्क से कमिट हैश को कैप्चर करने से होती है। यदि कोई प्रतिबद्ध हैश प्रदान नहीं किया गया है, तो यह एक उपयोग संदेश प्रदर्शित करता है और बाहर निकल जाता है। इस स्क्रिप्ट में प्रयुक्त मुख्य कमांड है git diff-tree --no-commit-id --name-only -r. --no-commit-id विकल्प आउटपुट से प्रतिबद्ध आईडी को हटा देता है, जबकि --name-only विकल्प यह सुनिश्चित करता है कि केवल फ़ाइल नाम प्रदर्शित हों। -r विकल्प कमांड को पुनरावर्ती बनाता है, जिसका अर्थ है कि यह कमिट से प्रभावित सभी निर्देशिकाओं में फ़ाइलों को सूचीबद्ध करेगा। यह स्क्रिप्ट उन उपयोगकर्ताओं के लिए उपयोगी है, जिन्हें आउटपुट को अव्यवस्थित करने वाली किसी भी अतिरिक्त जानकारी के बिना यह देखने के लिए त्वरित और आसान तरीके की आवश्यकता होती है कि किसी दिए गए कमिट में कौन सी फ़ाइलें बदली गईं।

पायथन स्क्रिप्ट समान लक्ष्य को प्राप्त करने के लिए अधिक प्रोग्रामेटिक दृष्टिकोण प्रदान करती है। इसका उपयोग करता है subprocess स्क्रिप्ट के भीतर से Git कमांड चलाने के लिए मॉड्यूल। कार्यक्रम list_commit_files एक कमिट हैश को एक तर्क के रूप में लेता है और कमांड निष्पादित करता है git diff-tree --no-commit-id --name-only -r का उपयोग करते हुए subprocess.run. stdout=subprocess.PIPE और stderr=subprocess.PIPE विकल्प क्रमशः कमांड के मानक आउटपुट और त्रुटि को कैप्चर करते हैं। check=True विकल्प यह सुनिश्चित करता है कि यदि आदेश विफल हो जाता है तो एक अपवाद उठाया जाता है। आउटपुट को बाइट्स से एक स्ट्रिंग में डिकोड किया जाता है और लाइनों में विभाजित किया जाता है, जिसे बाद में प्रिंट किया जाता है। यह स्क्रिप्ट बड़े पायथन कार्यक्रमों में एकीकरण के लिए आदर्श है जहां आपको प्रोग्रामेटिक रूप से कमिट में बदली गई फ़ाइलों की सूची को संसाधित या विश्लेषण करने की आवश्यकता होती है।

बिना किसी जानकारी के कमिट में फ़ाइलों को सूचीबद्ध करने के लिए Git का उपयोग करना

शैल स्क्रिप्ट का उपयोग करना

#!/bin/bash
# Script to list files in a given Git commit
commit_hash=$1
if [ -z "$commit_hash" ]; then
  echo "Usage: $0 <commit_hash>"
  exit 1
fi
git diff-tree --no-commit-id --name-only -r $commit_hash
exit 0

Git में कमिट फ़ाइलें निकालने के लिए प्रोग्रामेटिक दृष्टिकोण

पायथन स्क्रिप्ट का उपयोग करना

import subprocess
import sys
def list_commit_files(commit_hash):
    try:
        result = subprocess.run(['git', 'diff-tree', '--no-commit-id', '--name-only', '-r', commit_hash],
                               stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)
        files = result.stdout.decode('utf-8').splitlines()
        for file in files:
            print(file)
    except subprocess.CalledProcessError as e:
        print(f"Error: {e.stderr.decode('utf-8')}", file=sys.stderr)
if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python script.py <commit_hash>")
        sys.exit(1)
    commit_hash = sys.argv[1]
    list_commit_files(commit_hash)

बिना किसी जानकारी के कमिट में फ़ाइलों को सूचीबद्ध करने के लिए Git का उपयोग करना

शैल स्क्रिप्ट का उपयोग करना

#!/bin/bash
# Script to list files in a given Git commit
commit_hash=$1
if [ -z "$commit_hash" ]; then
  echo "Usage: $0 <commit_hash>"
  exit 1
fi
git diff-tree --no-commit-id --name-only -r $commit_hash
exit 0

Git में कमिट फ़ाइलें निकालने के लिए प्रोग्रामेटिक दृष्टिकोण

पायथन स्क्रिप्ट का उपयोग करना

import subprocess
import sys
def list_commit_files(commit_hash):
    try:
        result = subprocess.run(['git', 'diff-tree', '--no-commit-id', '--name-only', '-r', commit_hash],
                               stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)
        files = result.stdout.decode('utf-8').splitlines()
        for file in files:
            print(file)
    except subprocess.CalledProcessError as e:
        print(f"Error: {e.stderr.decode('utf-8')}", file=sys.stderr)
if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python script.py <commit_hash>")
        sys.exit(1)
    commit_hash = sys.argv[1]
    list_commit_files(commit_hash)

Git कमिट में फ़ाइलों को सूचीबद्ध करने के वैकल्पिक तरीके

उपयोग से परे git diff-tree, Git कमिट में फ़ाइलों को सूचीबद्ध करने के अन्य तरीके हैं, प्रत्येक के अपने उपयोग के मामले और फायदे हैं। ऐसा ही एक तरीका है git ls-tree आज्ञा। यह कमांड एक ट्री ऑब्जेक्ट की सामग्री को सूचीबद्ध कर सकता है, जो Git में एक कमिट से मेल खाती है। कमिट हैश और निर्दिष्ट करके --name-only विकल्प, आप फ़ाइल नामों की एक सादा सूची पुनः प्राप्त कर सकते हैं। यह विधि किसी कमिट की संरचना की खोज करने और किसी विशिष्ट समय पर रिपॉजिटरी के भीतर फ़ाइलों के पदानुक्रमित संगठन को समझने के लिए विशेष रूप से उपयोगी है।

एक अन्य दृष्टिकोण में का उपयोग करना शामिल है git show अवांछित जानकारी को फ़िल्टर करने के लिए विशिष्ट विकल्पों के साथ कमांड। उदाहरण के लिए, --pretty="" विकल्प के साथ संयुक्त --name-only आउटपुट को केवल फ़ाइल नामों तक सीमित कर सकते हैं। हालांकि git show आमतौर पर विस्तृत प्रतिबद्ध जानकारी प्रदर्शित करने के लिए उपयोग किया जाता है, ये विकल्प अतिरिक्त विवरण के बिना लिस्टिंग फ़ाइलों की जरूरतों को पूरा करने के लिए इसके आउटपुट को अनुकूलित कर सकते हैं। इसके अतिरिक्त, ग्राफ़िकल इंटरफ़ेस और Git GUI अक्सर कमिट में फ़ाइलों को सूचीबद्ध करने के लिए अंतर्निहित कार्यक्षमता प्रदान करते हैं, जो कमांड लाइन का उपयोग किए बिना कमिट और उनकी सामग्री का पता लगाने के लिए अधिक उपयोगकर्ता-अनुकूल तरीका प्रदान करते हैं।

Git कमिट में फ़ाइलों को सूचीबद्ध करने के बारे में अक्सर पूछे जाने वाले प्रश्न

  1. मैं अंतर दिखाए बिना कमिट में फ़ाइलों को कैसे सूचीबद्ध कर सकता हूँ?
  2. आप इसका उपयोग कर सकते हैं git diff-tree --no-commit-id --name-only -r अंतर दिखाए बिना फ़ाइलों को सूचीबद्ध करने का आदेश।
  3. का उद्देश्य क्या है --name-only Git कमांड में विकल्प?
  4. --name-only विकल्प किसी भी अतिरिक्त विवरण को छोड़कर, आउटपुट को केवल प्रभावित फ़ाइलों के नाम तक सीमित रखता है।
  5. क्या मैं उपयोग कर सकता हूँ git ls-tree कमिट में फ़ाइलों को सूचीबद्ध करने के लिए?
  6. हाँ, git ls-tree कमिट हैश को निर्दिष्ट करके और कमिट जैसे किसी ट्री ऑब्जेक्ट की सामग्री को सूचीबद्ध करने के लिए उपयोग किया जा सकता है --name-only विकल्प।
  7. क्या ग्राफ़िकल इंटरफ़ेस का उपयोग करके कमिट में फ़ाइलों को सूचीबद्ध करने का कोई तरीका है?
  8. कई Git GUI और ग्राफ़िकल इंटरफ़ेस में कमिट में फ़ाइलों को सूचीबद्ध करने के लिए अंतर्निहित कार्यक्षमता होती है, जो कमिट सामग्री का पता लगाने के लिए अधिक उपयोगकर्ता-अनुकूल तरीका प्रदान करती है।
  9. क्या करता है --no-commit-id विकल्प में करो git diff-tree?
  10. --no-commit-id विकल्प फ़ाइलों की सूची को सरल बनाते हुए, आउटपुट से प्रतिबद्ध आईडी को हटा देता है।
  11. मैं Git कमांड को Python स्क्रिप्ट में कैसे एकीकृत कर सकता हूं?
  12. आप इसका उपयोग कर सकते हैं subprocess Git कमांड चलाने और आगे की प्रक्रिया के लिए उनके आउटपुट को कैप्चर करने के लिए Python में मॉड्यूल।
  13. क्या करता है check=True विकल्प में करें subprocess.run समारोह?
  14. check=True यदि आदेश निष्पादित होता है तो विकल्प एक अपवाद उठाता है subprocess.run त्रुटि प्रबंधन सुनिश्चित करते हुए, एक गैर-शून्य निकास कोड लौटाता है।
  15. क्या इन Git कमांड के उपयोग से कोई जोखिम जुड़ा हुआ है?
  16. ये Git कमांड आम तौर पर फ़ाइलों को सूचीबद्ध करने के लिए उपयोग करने के लिए सुरक्षित हैं, लेकिन यह सुनिश्चित करना महत्वपूर्ण है कि अनपेक्षित परिणामों से बचने के लिए सही कमिट हैश निर्दिष्ट किया गया है।

Git कमिट में फ़ाइलों को सूचीबद्ध करने पर अंतिम विचार

किए गए परिवर्तनों के दायरे को समझने के लिए किसी विशिष्ट Git कमिट में सभी फ़ाइलों को सूचीबद्ध करना आवश्यक है। जैसे कमांड का उपयोग करके git diff-tree और git ls-tree, या शेल और पायथन स्क्रिप्ट के माध्यम से स्वचालन लागू करके, आप फ़ाइलों की एक साफ़ और संक्षिप्त सूची प्राप्त कर सकते हैं। ये विधियाँ समीक्षा प्रक्रिया को सुव्यवस्थित करने में मदद करती हैं, जिससे परिवर्तनों को ट्रैक करना और रिपॉजिटरी को प्रभावी ढंग से प्रबंधित करना आसान हो जाता है।