அனைத்து கோப்புகளையும் ஒரு குறிப்பிட்ட ஜிட் கமிட்டில் பட்டியலிடுதல்

அனைத்து கோப்புகளையும் ஒரு குறிப்பிட்ட ஜிட் கமிட்டில் பட்டியலிடுதல்
Shell

Git கமிட் கோப்பு பட்டியல்களைப் புரிந்துகொள்வது

Git உடன் பணிபுரியும் போது, ​​​​ஒரு குறிப்பிட்ட ஒப்பந்தத்தில் உள்ள அனைத்து கோப்புகளின் பட்டியலையும் நீங்கள் பார்க்க வேண்டிய நேரங்கள் உள்ளன. மாற்றங்களை மதிப்பாய்வு செய்வதற்கும், பிழைத்திருத்தம் செய்வதற்கும் அல்லது குறிப்பிட்ட உறுதிப்பாட்டின் நோக்கத்தைப் புரிந்துகொள்வதற்கும் இது பயனுள்ளதாக இருக்கும். இருப்பினும், சில கட்டளைகளைப் பயன்படுத்தி, விரிவான வேறுபாடுகள் போன்ற தேவைக்கு அதிகமான தகவலை உருவாக்க முடியும்.

இந்தக் கட்டுரையில், ஒரு குறிப்பிட்ட Git கமிட்டில் உள்ள அனைத்து கோப்புகளையும் எவ்வாறு சுத்தமான மற்றும் நேரடியான முறையில் பட்டியலிடுவது என்பதை ஆராய்வோம். சில பொதுவான கட்டளைகளின் வரம்புகளை நாங்கள் நிவர்த்தி செய்வோம் மற்றும் கூடுதல் வேறுபாடுகள் இல்லாமல் கோப்புகளின் பட்டியலை வெளியிடும் தீர்வை வழங்குவோம்.

கட்டளை விளக்கம்
git diff-tree ஒரு உறுதிப்பாட்டின் மர அமைப்பைக் காட்டப் பயன்படுகிறது, மாறுபட்ட தகவல் இல்லாமல் கொடுக்கப்பட்ட கமிட்டில் மாற்றங்களைக் காண்பிக்கும்.
--no-commit-id கோப்பு பட்டியலை எளிதாக்குவதன் மூலம், வெளியீட்டில் இருந்து உறுதி ஐடிகளைத் தவிர்க்க git diff-tree உடன் பயன்படுத்தப்படும் விருப்பம்.
--name-only கூடுதல் விவரங்கள் இல்லாமல், பாதிக்கப்பட்ட கோப்புகளின் பெயர்களை மட்டும் காண்பிக்கும் விருப்பம்.
-r உள்ளமைக்கப்பட்ட கோப்பகங்கள் உட்பட, கமிட்டில் உள்ள அனைத்து கோப்பு மாற்றங்களும் பட்டியலிடப்பட்டுள்ளதை உறுதி செய்வதற்கான சுழல்நிலை விருப்பம்.
subprocess.run பைதான் செயல்பாடு வெளிப்புற கட்டளைகளை இயக்கவும் மற்றும் ஒரு ஸ்கிரிப்ட்டில் மேலும் செயலாக்க அவற்றின் வெளியீட்டைப் பிடிக்கவும்.
stdout=subprocess.PIPE subprocess.run மூலம் செயல்படுத்தப்படும் கட்டளையின் நிலையான வெளியீட்டைப் பிடிக்க விருப்பம்.
stderr=subprocess.PIPE subprocess.run ஆல் செயல்படுத்தப்படும் கட்டளையின் நிலையான பிழையைப் பிடிக்க விருப்பம், பிழை கையாளுதலுக்கு பயனுள்ளதாக இருக்கும்.
check=True subprocess.run ஆல் செயல்படுத்தப்படும் கட்டளை பூஜ்ஜியமற்ற வெளியேறும் குறியீட்டை வழங்கினால், விதிவிலக்கை உயர்த்துவதற்கான விருப்பம்.

Git Commit கோப்பு பட்டியல் ஸ்கிரிப்ட்களின் விரிவான விளக்கம்

வழங்கப்பட்ட ஷெல் ஸ்கிரிப்ட் ஒரு குறிப்பிட்ட 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 கட்டளைகளை பைதான் ஸ்கிரிப்ட்டில் எவ்வாறு ஒருங்கிணைப்பது?
  12. நீங்கள் பயன்படுத்தலாம் subprocess Git கட்டளைகளை இயக்க பைத்தானில் தொகுதி மற்றும் மேலும் செயலாக்கத்திற்கான அவற்றின் வெளியீட்டைப் பிடிக்கவும்.
  13. என்ன செய்கிறது check=True விருப்பத்தை செய்ய subprocess.run செயல்பாடு?
  14. தி check=True கட்டளை செயல்படுத்தப்பட்டால் விருப்பம் விதிவிலக்கை எழுப்புகிறது subprocess.run பூஜ்ஜியமற்ற வெளியேறும் குறியீட்டை வழங்குகிறது, பிழை கையாளுதலை உறுதி செய்கிறது.
  15. இந்த Git கட்டளைகளைப் பயன்படுத்துவதில் ஏதேனும் ஆபத்துகள் உள்ளதா?
  16. இந்த Git கட்டளைகள் பொதுவாக கோப்புகளை பட்டியலிடுவதற்கு பாதுகாப்பானவை, ஆனால் திட்டமிடப்படாத முடிவுகளைத் தவிர்க்க சரியான கமிட் ஹாஷ் குறிப்பிடப்பட்டுள்ளதா என்பதை உறுதிப்படுத்துவது முக்கியம்.

Git கமிட்டில் கோப்புகளை பட்டியலிடுவதற்கான இறுதி எண்ணங்கள்

ஒரு குறிப்பிட்ட Git கமிட்டில் உள்ள அனைத்து கோப்புகளையும் பட்டியலிடுவது, செய்யப்பட்ட மாற்றங்களின் நோக்கத்தைப் புரிந்துகொள்வதற்கு அவசியம். போன்ற கட்டளைகளைப் பயன்படுத்துவதன் மூலம் git diff-tree மற்றும் git ls-tree, அல்லது ஷெல் மற்றும் பைதான் ஸ்கிரிப்ட்கள் மூலம் ஆட்டோமேஷனை செயல்படுத்தினால், கோப்புகளின் சுத்தமான மற்றும் சுருக்கமான பட்டியலை நீங்கள் அடையலாம். இந்த முறைகள் மறுஆய்வு செயல்முறையை சீரமைக்க உதவுகின்றன, மாற்றங்களைக் கண்காணிப்பதை எளிதாக்குகிறது மற்றும் களஞ்சியங்களை திறம்பட நிர்வகிக்கிறது.