Git रिपॉजिटरी में हटाई गई फ़ाइलों को पुनर्स्थापित करना: एक चरण-दर-चरण मार्गदर्शिका

Git

Git से हटाई गई फ़ाइलें पुनर्प्राप्त करना

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

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

आज्ञा विवरण
git log --diff-filter=D --summary प्रतिबद्ध लॉग प्रदर्शित करता है जिसमें फ़ाइल विलोपन शामिल है, परिवर्तनों का सारांश दिखाता है।
grep "filename.txt" कमिट लॉग में विशिष्ट फ़ाइलनाम.txt खोजने के लिए आउटपुट को फ़िल्टर करता है।
awk '{print $1}' फ़िल्टर किए गए आउटपुट से पहला फ़ील्ड निकालता है, जो कमिट हैश है।
git checkout <commit-hash>^ -- filename.txt निर्दिष्ट कमिट हैश की मूल कमिट से हटाई गई फ़ाइल की जाँच करता है।
subprocess.check_output() शेल में एक कमांड चलाता है और उसका आउटपुट लौटाता है, जिसका उपयोग पायथन स्क्रिप्ट में किया जाता है।
subprocess.run() शेल में एक कमांड निष्पादित करता है, जिसका उपयोग गिट कमांड चलाने के लिए पायथन स्क्रिप्ट में किया जाता है।

हटाई गई फ़ाइलों को पुनर्स्थापित करने के लिए Git कमांड को समझना और उनका उपयोग करना

ऊपर दी गई स्क्रिप्ट उपयोगकर्ताओं को Git रिपॉजिटरी में हटाई गई फ़ाइलों को कुशलतापूर्वक ढूंढने और पुनर्स्थापित करने में मदद करने के लिए डिज़ाइन की गई हैं। पहली स्क्रिप्ट का उपयोग करता है कमांड, जो उन कमिटों का सारांश दिखाता है जिनमें विलोपन शामिल हैं। इस कमांड को इसके साथ जोड़ा गया है आउटपुट को फ़िल्टर करने और फ़ाइलनाम.txt नामक फ़ाइल के विशिष्ट विलोपन का पता लगाने के लिए। फिर फ़िल्टर किए गए आउटपुट से कमिट हैश निकालने के लिए कमांड का उपयोग किया जाता है। कमिट हैश की पहचान के साथ, स्क्रिप्ट का उपयोग होता है git checkout <commit-hash>^ -- filename.txt डिलीट कमिट के पैरेंट कमिट से फ़ाइल को पुनर्स्थापित करने के लिए। अंत में, पुनर्स्थापित फ़ाइल को स्टेजिंग क्षेत्र में वापस जोड़ा जाता है और उपयोग करके प्रतिबद्ध किया जाता है और .

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

उस कमिट को ढूँढना जिसने फ़ाइल को हटा दिया

Git कमांड लाइन का उपयोग करना

# To find the commit that deleted a specific file, use git log with path filter:
git log --diff-filter=D --summary | grep "filename.txt"
# This command will output the commit hash where the file was deleted.
# Note the commit hash for later use.

कमिट से हटाई गई फ़ाइल को पुनर्स्थापित करना

Git कमांड लाइन का उपयोग करना

# Once you have the commit hash, use git checkout to restore the file:
git checkout <commit-hash>^ -- filename.txt
# The caret (^) symbol is used to refer to the parent commit of the deletion commit.
# This command will restore filename.txt to your working directory.
# Add the file back to the staging area:
git add filename.txt
# Commit the restoration:
git commit -m "Restore filename.txt"
# Now, the file is restored to your repository.

एक स्क्रिप्ट के साथ पुनर्स्थापना प्रक्रिया को स्वचालित करना

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

#!/bin/bash
# Script to find and restore a deleted file in a Git repository
if [ -z "$1" ]; then
  echo "Usage: $0 <filename>"
  exit 1
fi
FILENAME=$1
COMMIT_HASH=$(git log --diff-filter=D --summary | grep "$FILENAME" | awk '{print $1}')
if [ -z "$COMMIT_HASH" ]; then
  echo "File not found in commit history."
  exit 1
fi
git checkout ${COMMIT_HASH}^ -- $FILENAME
git add $FILENAME
git commit -m "Restore $FILENAME"
echo "File $FILENAME has been restored and committed."

पायथन का उपयोग करके हटाई गई फ़ाइल को पुनर्स्थापित करना

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

import subprocess
import sys
if len(sys.argv) != 2:
    print("Usage: python restore_file.py <filename>")
    sys.exit(1)
filename = sys.argv[1]
log_output = subprocess.check_output(["git", "log", "--diff-filter=D", "--summary"])
log_output = log_output.decode("utf-8")
commit_hash = None
for line in log_output.splitlines():
    if filename in line:
        commit_hash = line.split()[1]
        break
if not commit_hash:
    print(f"File {filename} not found in commit history.")
    sys.exit(1)
subprocess.run(["git", "checkout", f"{commit_hash}^", "--", filename])
subprocess.run(["git", "add", filename])
subprocess.run(["git", "commit", "-m", f"Restore {filename}"])
print(f"File {filename} has been restored and committed.")

Git रिपॉजिटरी में फ़ाइल पुनर्स्थापना में महारत हासिल करना

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

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

  1. मैं कैसे पता लगाऊं कि Git में कोई फ़ाइल कब हटा दी गई थी?
  2. आप उपयोग कर सकते हैं उस कमिट को ढूंढने के लिए जिसने फ़ाइल को हटा दिया है।
  3. यदि मुझे कमिट हैश का पता नहीं है तो क्या मैं हटाई गई फ़ाइल को पुनर्स्थापित कर सकता हूँ?
  4. हां, आप डिलीट कमिट का उपयोग करके खोज सकते हैं या आवश्यक हैश खोजने के लिए.
  5. कैरेट (^) चिन्ह क्या करता है? ?
  6. कैरेट प्रतीक निर्दिष्ट कमिट हैश के मूल कमिट को संदर्भित करता है।
  7. क्या Git में हटाई गई फ़ाइलों को पुनर्स्थापित करने का कोई स्वचालित तरीका है?
  8. हाँ, आप हटाई गई फ़ाइलों को खोजने और पुनर्स्थापित करने की प्रक्रिया को स्वचालित करने के लिए बैश या पायथन जैसी स्क्रिप्ट का उपयोग कर सकते हैं।
  9. मैं पुनर्स्थापित फ़ाइल को वापस अपनी रिपॉजिटरी में कैसे जोड़ सकता हूँ?
  10. फ़ाइल को पुनर्स्थापित करने के बाद, उपयोग करें और इसे वापस रिपॉजिटरी में जोड़ने के लिए।
  11. क्या है के लिए इस्तेमाल होता है?
  12. इसका उपयोग शाखाओं की नोक और अन्य संदर्भों में किए गए सभी परिवर्तनों को रिकॉर्ड करने के लिए किया जाता है, जिससे सभी कार्यों का पता लगाने में मदद मिलती है।
  13. क्या मैं Git में हटाई गई फ़ाइलों को पुनर्स्थापित करने के लिए GUI का उपयोग कर सकता हूँ?
  14. हां, GitKraken, सोर्सट्री और Git एक्सटेंशन जैसे उपकरण फ़ाइलों को प्रबंधित और पुनर्स्थापित करने का एक दृश्य तरीका प्रदान करते हैं।
  15. Git में उपनाम क्या है और यह कैसे मदद कर सकता है?
  16. Git उपनाम लंबी कमांड के लिए एक शॉर्टकट है। यह बार-बार किए जाने वाले कार्यों को सरल बना सकता है और फ़ाइलों को पुनर्स्थापित करने की प्रक्रिया को अधिक कुशल बना सकता है।

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