Git deposunda bulunan tüm dosyaları listeleyin


109

Belirtilen dalda şimdiye kadar var olan tüm dosyaları listelemenin temiz bir yolu var mı?

Yanıtlar:


136

Bu, Strager'in çözümünün basitleştirilmiş bir varyasyonudur :

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

Düzenleme: Bana yorumlarda biraz daha fazla şey öğrettiği için Jakub'a teşekkürler, bu sürüm daha kısa bir boru hattına sahip ve git'e işleri doğru yapmak için daha fazla fırsat veriyor.

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

8
@Dustlin: Add --diff-filter = Bir seçenek (sadece eklenen dosyaları listele). Yeniden adlandırma algılamasını etkinleştirdiyseniz ve geçmişte yeniden adlar varsa, mevcut sürüm (yalnızca eklenen dosyaları sed filtrelemesi olmadan) başarısız olur. Sanırım o zaman --name-status yerine --name-only kullanıp ardışık düzenten 'cut -f2-' yi kaldırabilirsiniz.
Jakub Narębski

Depolarımdan birinde, ilkiyle aynı olmayan ikinci komutla epeyce yinelenen satır (çıktının başında birkaç boş satır dahil) alıyorum.
Slipp D. Thompson

Dosya adından biraz daha fazla bilgiye ihtiyacınız varsa: $ git log --pretty = format: "% h% an [% cd]:% s" - sadece ad | kesim -f2- | sırala -u | grep Filename.ext
Nitay

3
Not: --allBirden fazla öksüz ipucunuz varsa ihtiyacınız olacak bir şeydir. Örneğin, bir depoda birden çok ayrı geçmiş.
ThorSummoner

2
--diff-filter=Azaten var olan bir dosyayı kopyalayarak oluşturulan dosyaları yoksayar, bu nedenle eklemek her zaman istediğiniz şey olmayabilir .
cmbuckley

13

Bu, sadece mevcut şubede değil depoda bir dosya adının olup olmadığını kontrol etmek için doğru olanı yapar .

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

3

Kaçabilirsiniz git-log --name-statusgibi bir şey yankıları hangi:

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

    Added test file.

A       test

Ardından eklenen dosyaları çıkarın:

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

2

İşte iki kullanışlı takma ad: FindFile ffve 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 #"

Dosya adları ve onlarla yapılan işlemler hakkında bilgi alırsınız.

Örnek kullanım:

$ 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.