उन सभी फाइलों को सूचीबद्ध करें, जो कभी एक Git रिपॉजिटरी में मौजूद थीं


109

क्या आपके पास उन सभी फाइलों को सूचीबद्ध करने का एक साफ तरीका है जो कभी निर्दिष्ट शाखा में मौजूद थीं?

जवाबों:


136

यह स्ट्रैगर के समाधान का सरलीकृत रूपांतर है :

git log --pretty=format: --name-status | cut -f2- | sort -u

संपादित करें: टिप्पणियों में मुझे थोड़ा और सिखाने के लिए जैकब का धन्यवाद, इस संस्करण में एक छोटी पाइपलाइन है और चीजों को सही तरीके से प्राप्त करने के लिए अधिक अवसर प्रदान करता है।

git log --pretty=format: --name-only --diff-filter=A | sort -u

8
@ डस्टलिन: Add -diff-filter = एक विकल्प (केवल जोड़ी गई फ़ाइलों की सूची)। यदि आपने नाम बदलने में सक्षम किया है और इतिहास में नाम बदला है, तो वर्तमान संस्करण (बिना सिर्फ़ फ़ाइंड किए फ़ाइलों को फ़ेल करना) विफल हो जाएगा। मुझे लगता है कि आप तब --name-status के बजाय --name-only का उपयोग कर सकते हैं और पाइपलाइन से 'cut -f2-' निकाल सकते हैं।
जैकब नारबस्की

मेरे एक रिपॉज में, मुझे दूसरी कमांड के साथ काफी कुछ डुप्लिकेट लाइनें (आउटपुट की शुरुआत में कई खाली लाइनों सहित) मिलती हैं जो पहले के साथ ड्यूप्स नहीं हैं।
स्लिप डी। थॉम्पसन

यदि आपको फ़ाइल नाम की तुलना में थोड़ी अधिक जानकारी चाहिए: $ git log --pretty = format: "% h% a [% cd]:% s" --name-only | कट -f2- | सॉर्ट -यू | grep Filename.ext
Nitay

3
नोट: --allएक ऐसी चीज है जिसकी आपको आवश्यकता होगी यदि आपके पास एक अनाथ टिप से अधिक है। जैसे, एक रेपो में कई अलग-अलग इतिहास।
थोरसुमोनर

2
--diff-filter=Aपहले से मौजूद फ़ाइल की प्रतिलिपि बनाकर बनाई गई फ़ाइलों को अनदेखा करता है, इसलिए इसे जोड़ना हमेशा वह नहीं हो सकता जो आप चाहते हैं।
cumbuckley

13

यह जाँचने के लिए सही काम करता है कि क्या कोई फ़ाइल नाम रेपो में मौजूद था न कि केवल वर्तमान शाखा पर।

git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar

3

आप चला सकते हैं git-log --name-status, जो कुछ ग्रहण करता है जैसे:

commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
Author: Your Name <your@email.com>
Date:   Tue Aug 12 13:28:34 2008 -0700

    Added test file.

A       test

फिर निकाले गए फ़ाइल जोड़े गए:

git-log --name-status | sed -ne 's/^A[^u]//p' | sort -u

2

यहाँ दो उपयोगी उपनाम है: FindFile ffऔर FindFilewithCopies ffc:

# Find if one file ever had into repository
ff = "!git log --pretty=format: --name-status --all -M -B | sort -u | grep $1   #"
# The same as above but showing copied files
ffc = "!git log --pretty=format: --name-status --all -C -M -B | sort -u | grep $1 #"

आप उनके साथ फ़ाइल नाम और संचालन के बारे में जानकारी प्राप्त करते हैं।

नमूना उपयोग:

$ git ff create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php

$ git ffc create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
C052    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_11_210246_create_boletin_nosend_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.