Hanya ingin tahu, untuk alasan apa Anda membutuhkan ini?
Stephen Jennings
@StephenJennings: ini adalah cara yang lebih baik untuk mengetahui jenis file apa yang dimiliki seseorang di bawah kontrol versi daripada melakukan " ls -Rminus .gitignore" secara mental . Kegunaannya secara umum: orang mungkin lebih atau kurang tahu apa yang sedang terjadi, tetapi introspeksi dari repositori memberikan satu keyakinan bahwa orang tahu. Khusus untuk pengguna pemula, kepercayaan diri seperti itu membuat perbedaan besar dalam cara menyenangkan program ini untuk digunakan. Git tidak menjadikan meyakinkan penggunanya prioritas, itulah sebabnya banyak orang yang membencinya dimengerti sampai mereka mempelajarinya.
Saya benar-benar mengerikan pada skrip shell jadi ini pasti sub-optimal, tetapi hal semacam ini mungkin melakukannya untuk Anda, dengan asumsi Anda menggunakan bash. Semoga orang lain bisa datang dan membersihkannya, atau menggantinya dengan sesuatu yang lebih baik. Saya hanya mengujinya di Mac saya, jadi waspadalah.
Seharusnya mencetak semua file dalam komit yang merupakan nenek moyang dari KEPALA saat ini. Simpan di file yang disebut manifest.shdi suatu tempat di jalur Anda:
#!/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
Tidak perlu exportkarena tidak perlu tersedia dalam proses anak. Jika loop melebihi hash SHA, loop bekerja dengan baik, jika tidak sesuatu menggunakan readdan mengutip variabel akan lebih baik. sortmemiliki -uopsi yang melakukan apa yang uniqdilakukannya. File tidak akan mendapatkan rmketika Anda membatalkan setengah jalan, Anda akan memerlukannya trapuntuk itu, tapi itu mungkin berlebihan untuk skrip ini.
Daniel Beck
@DanielBeck: Terima kasih, saya memperbaruinya sedikit. mktemptidak ada di Git Bash, saya harus mencari cara untuk menghadapinya sehingga Windows dapat bermain juga.
git ls-files
?ls -R
minus.gitignore
" secara mental . Kegunaannya secara umum: orang mungkin lebih atau kurang tahu apa yang sedang terjadi, tetapi introspeksi dari repositori memberikan satu keyakinan bahwa orang tahu. Khusus untuk pengguna pemula, kepercayaan diri seperti itu membuat perbedaan besar dalam cara menyenangkan program ini untuk digunakan. Git tidak menjadikan meyakinkan penggunanya prioritas, itulah sebabnya banyak orang yang membencinya dimengerti sampai mereka mempelajarinya.Jawaban:
Saya benar-benar mengerikan pada skrip shell jadi ini pasti sub-optimal, tetapi hal semacam ini mungkin melakukannya untuk Anda, dengan asumsi Anda menggunakan bash. Semoga orang lain bisa datang dan membersihkannya, atau menggantinya dengan sesuatu yang lebih baik. Saya hanya mengujinya di Mac saya, jadi waspadalah.
Seharusnya mencetak semua file dalam komit yang merupakan nenek moyang dari KEPALA saat ini. Simpan di file yang disebut
manifest.sh
di suatu tempat di jalur Anda:sumber
export
karena tidak perlu tersedia dalam proses anak. Jika loop melebihi hash SHA, loop bekerja dengan baik, jika tidak sesuatu menggunakanread
dan mengutip variabel akan lebih baik.sort
memiliki-u
opsi yang melakukan apa yanguniq
dilakukannya. File tidak akan mendapatkanrm
ketika Anda membatalkan setengah jalan, Anda akan memerlukannyatrap
untuk itu, tapi itu mungkin berlebihan untuk skrip ini.mktemp
tidak ada di Git Bash, saya harus mencari cara untuk menghadapinya sehingga Windows dapat bermain juga.