แม้ว่าการตอบสนองของ ididakจะค่อนข้างดีและHandyman5มีสคริปต์ให้ใช้ แต่ฉันพบว่ามีข้อ จำกัด เล็กน้อยในการใช้วิธีการดังกล่าว
บางครั้งคุณต้องค้นหาสิ่งที่สามารถปรากฏ / หายไปเมื่อเวลาผ่านไปดังนั้นทำไมจึงไม่ค้นหาทั้งหมดที่กระทำ นอกจากนั้นบางครั้งคุณต้องมีการตอบกลับอย่างละเอียดและบางครั้งก็มีเพียงการแข่งขัน ตัวเลือกเหล่านี้มีสองรุ่น ใส่สคริปต์เหล่านี้ในเส้นทางของคุณ:
คอมไพล์หาไฟล์
for branch in $(git rev-list --all)
do
if (git ls-tree -r --name-only $branch | grep --quiet "$1")
then
echo $branch
fi
done
คอมไพล์หาไฟล์-ละเอียด
for branch in $(git rev-list --all)
do
git ls-tree -r --name-only $branch | grep "$1" | sed 's/^/'$branch': /'
done
ตอนนี้คุณสามารถทำได้
$ git find-file <regex>
sha1
sha2
$ git find-file-verbose <regex>
sha1: path/to/<regex>/searched
sha1: path/to/another/<regex>/in/same/sha
sha2: path/to/other/<regex>/in/other/sha
ดูว่าการใช้getoptคุณสามารถแก้ไขสคริปต์เพื่อสลับการค้นหาคอมมิทการอ้างอิงการอ้างอิง / หัวรับ verbose ทั้งหมด
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
ชำระเงินhttps://github.com/albfan/git-find-fileเพื่อการใช้งานที่เป็นไปได้