มีวิธีรายการไฟล์ทั้งหมดในปัจจุบันภายใต้การควบคุมแหล่งที่มาในคอมไพล์? (ไม่ใช่เฉพาะสิ่งที่ได้รับการแก้ไข)
มีวิธีรายการไฟล์ทั้งหมดในปัจจุบันภายใต้การควบคุมแหล่งที่มาในคอมไพล์? (ไม่ใช่เฉพาะสิ่งที่ได้รับการแก้ไข)
คำตอบ:
หากคุณต้องการแสดงรายการไฟล์ทั้งหมดสำหรับสาขาเฉพาะเช่น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
โปรแกรมดูพื้นที่เก็บข้อมูลแบบโต้ตอบ
โปรดดูที่ภาพด้านขวามีแพทช์สองตัวเลือกและทรี หากคุณเลือกทรีคุณสามารถดูโครงสร้างโฟลเดอร์สำหรับแต่ละการกระทำ