มีวิธีรายการไฟล์ทั้งหมดในปัจจุบันภายใต้การควบคุมแหล่งที่มาในคอมไพล์? (ไม่ใช่เฉพาะสิ่งที่ได้รับการแก้ไข)
มีวิธีรายการไฟล์ทั้งหมดในปัจจุบันภายใต้การควบคุมแหล่งที่มาในคอมไพล์? (ไม่ใช่เฉพาะสิ่งที่ได้รับการแก้ไข)
คำตอบ:
หากคุณต้องการแสดงรายการไฟล์ทั้งหมดสำหรับสาขาเฉพาะเช่นmaster:
git ls-tree -r master - ชื่อเท่านั้น
-rตัวเลือกที่จะปล่อยให้มัน recurse ลงในไดเรกทอรีย่อยและพิมพ์แต่ละไฟล์ในปัจจุบันภายใต้การควบคุมเวอร์ชัน คุณสามารถระบุHEADแทนmasterเพื่อรับรายการสาขาอื่น ๆ ที่คุณอาจเข้า
หากคุณต้องการดูรายการไฟล์ทั้งหมดที่มีอยู่ให้ดูที่นี่ :
บันทึก git --pretty = รูปแบบ: - ชื่อเท่านั้น --diff-filter = A | เรียงลำดับ -u
git ls-tree -r master --name-onlyจะทำเช่นเดียวกับตัวเลือกแรกโดยไม่ต้อง cutอาและคุณสามารถระบุHEADแทนmasterหากคุณต้องการรายการนี้สำหรับสาขาใด ๆ ที่คุณอยู่ในปัจจุบัน
-? มันทำให้บางบรรทัดเพิ่มเติมเพื่อแสดงไฟล์บางไฟล์ในคอลัมน์ที่สองซึ่งซ้ำจากครั้งแรก
git ls-filesคำสั่งจะทำสิ่งที่คุณต้องการ
ที่มา: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-filesแทนที่จะgit ls-tree -r master --name-onlyง่ายกว่าอย่างแน่นอน
git-ls-filesไบนารี มีgitไบนารีพร้อมกับls-filesคำสั่ง ลิงค์ไปยังเอกสารนั้นถูกต้องในเนื้อหา แต่ในทางเทคนิคสำหรับไบนารีที่ล้าสมัย
git-commit, git-init, git-ls-filesฯลฯ แม้ว่าโปรแกรมเป็นจริง subcommands ไม่เคยมีgit-ls-filesไบนารีเป็นไปได้มากที่สุด เหตุผลก็คือมันสอดคล้องกับกลไกคำสั่งย่อยภายนอกซึ่งช่วยให้คุณสามารถลงทะเบียนgit fooคำสั่งโดยการเขียนgit-fooไบนารี
git ls-files จะพิมพ์ไฟล์ในไดเรกทอรีการทำงานปัจจุบันเท่านั้น
ตัวอย่างเช่นหากคุณมี repo git สำหรับ dotfiles ( core.worktree = /) จากนั้นคุณจะมีไฟล์ที่อยู่นอกรูท git และคำสั่งง่ายๆนั้นจะไม่ทำงานอีกต่อไป
ในระยะสั้นสิ่งนี้จะได้ผล:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
ตัวอย่าง:
mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /
# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude
# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config
# `git status` would now print:
# new file: ../../../etc/ssh/sshd_config
# new file: README
git status
git commit -m "Initial commit"
# At this point, `git ls-files` prints only:
# README
git ls-files
# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files
หากคุณต้องการพา ธ ที่ระบุซึ่งสัมพันธ์กับไดเร็กทอรี (เชลล์) ปัจจุบันของคุณสิ่งนี้จะทำงาน:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
และในตัวอย่างด้านบนมันจะพิมพ์
README
../../../etc/ssh/sshd_config
git ls-filesแสดงทั้งหมดในไดเรกทอรีปัจจุบันและด้านล่าง มันไม่แสดงไฟล์ที่ถูกลบใน repo
คุณยังสามารถใช้gitkโปรแกรมดูพื้นที่เก็บข้อมูลแบบโต้ตอบ

โปรดดูที่ภาพด้านขวามีแพทช์สองตัวเลือกและทรี หากคุณเลือกทรีคุณสามารถดูโครงสร้างโฟลเดอร์สำหรับแต่ละการกระทำ