Git में हर संशोधन के लिए हर फ़ाइल को कैसे सूचीबद्ध करें (जैसे Mercurial का hg मैनिफ़ेस्ट --all)?


10

मर्क्यूरियल के पास हर रिवीजन के लिए रिपॉजिटरी की हर फाइल को सूचीबद्ध करने की आज्ञा है:

hg manifest --all

क्या Git में समतुल्य आदेश है?


गिट लॉग --stat जैसा कुछ?
jmreicha

4
git ls-files?
एनएन

बस जिज्ञासु, आपको किस कारण से इसकी आवश्यकता है?
स्टीफन जेनिंग्स

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

जवाबों:


3

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

यह उन सभी फाइलों को प्रिंट करना चाहता है जो वर्तमान HEAD के पूर्वज हैं। इसे manifest.shअपने पथ में कहीं फ़ाइल में सहेजें :

#!/bin/bash

TFILE=$(mktemp -t git-manifest)

for sha in $(git log --pretty=format:%H)
do
    git ls-tree --name-only --full-tree -r $sha >> $TFILE
done

sort -u $TFILE
rm $TFILE

1
की आवश्यकता नहीं है export, क्योंकि यह बच्चे प्रक्रियाओं में उपलब्ध होने की जरूरत नहीं है। यदि लूप SHA हैश से अधिक है, तो लूप बस ठीक काम करता है, अन्यथा readचर का उपयोग करने और उद्धृत करने से कुछ बेहतर होगा। sortएक -uविकल्प है कि क्या uniqकरता है। rmजब आप आधे रास्ते को रद्द करते हैं, तो फ़ाइल को डी नहीं मिलेगा , आपको इसके लिए आवश्यकता होगी trap, लेकिन यह इस स्क्रिप्ट के लिए अत्यधिक होगा।
डैनियल बेक

@ डैनियलबेक: धन्यवाद, मैंने इसे थोड़ा अद्यतन किया। mktempGit Bash में मौजूद नहीं है, मुझे इससे निपटने का एक तरीका निकालना चाहिए ताकि Windows भी खेल सके।
स्टीफन जेनिंग्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.