วิธีทำให้สถานะ git แสดงเฉพาะไฟล์ที่จัดฉาก


86

ฉันต้องการรับรายชื่อไฟล์ที่จัดขั้นเท่านั้น ฉันไม่พบแฟล็กที่เทียบเท่า--name-onlyสำหรับgit statusคำสั่ง ทางเลือกที่ดีคืออะไร?

รายการไฟล์จะถูกส่งไปที่php -l(ตัวตรวจสอบไวยากรณ์ของ PHP lint)

วิธีแก้ไข: คำสั่งที่สมบูรณ์

git diff --name-only --cached | xargs -l php -l

3
หากคุณกำลังเรียกใช้คำสั่งนั้นด้วยตนเองดูเหมือนว่าคุณอาจต้องการนำคำสั่งนั้นไปไว้ใน pre-commits hook kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog

คำตอบ:



14

คำตอบที่ยอมรับจะไม่แจ้งให้คุณทราบว่ามีการเปลี่ยนแปลงประเภทใดบ้าง

ใช่หากคุณไม่ใช่ตัวตรวจสอบไวยากรณ์ แต่เป็นคนธรรมดาที่มีพื้นที่เก็บข้อมูลเต็มไปด้วยไฟล์ที่ไม่ได้จัดเตรียมและคุณยังคงต้องการทราบว่าจะเกิดอะไรขึ้นกับไฟล์ที่จัดขั้นมีคำสั่งอื่น:

git status --short | grep '^[MARCD]'

ซึ่งนำไปสู่บางสิ่งเช่น:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

เห็นได้ชัดว่าไฟล์นี้ถูกจัดฉากและหลังจากgit commit:
deleted_fileจะถูกลบ
new_fileจะถูกเพิ่ม
renamed_fileจะกลายเป็นไฟล์renamed_to.

นี่คือคำอธิบายของเอาต์พุตรูปแบบสั้น: https://git-scm.com/docs/git-status#_short_format


1. ในเวอร์ชันของฉัน (2.25.0.windows.1) มีช่องว่างก่อน "M" และ "D" 2. ยังมีอีกสถานะหนึ่ง - "??" ซึ่งฉันไม่แน่ใจว่าจะตีความอย่างไร
itsho

@itsho เว้นวรรคระบุว่าไม่ได้จัดฉาก คำตอบนี้ถูกต้องเนื่องจากตรงกับอักขระตัวแรกในบรรทัด หากตั้งค่าถ่านแรกแสดงว่าเป็นไฟล์ที่จัดขั้น หากเป็นช่องว่างจะถูกละเว้น
Avner

1
นี่มันอัจฉริยะ! - ควรมีแฟ
ล็

4

แรงบันดาลใจจากคำตอบของ@ coffman21ฉันได้ตั้งค่านามแฝงต่อไปนี้ในไฟล์.zshrc

alias gst="git status"
alias gst-staged="git status --short | grep '^\w.'"
alias gst-unstaged="git status  --short | grep '^\W.'"
alias gst-unstaged-tracked="git status  --short | grep '^\s.'"
alias gst-untracked="git status --short | grep '^??'"

อาจมีประโยชน์กับคนอื่น ดังนั้นการเพิ่มลงในกลุ่มคำตอบ


1
สำหรับการระบายสีสอดคล้องคุณสามารถเพิ่ม.ใน grep, สีทั้ง 2 ตัวอักษรเริ่มต้นที่ชอบ: grep '^\w.', grep '^\W.',grep '^\s.'
geekley

ไม่จำเป็นต้องมีคนสุดท้ายแม้ว่า; มันมีสองตัวอักษร??
geekley

ตอนนี้ได้รับการแก้ไขแล้ว ขอบคุณอีกครั้ง
Norfeldt

0

เพื่อดูไฟล์ที่จัดขั้นพร้อมการเปลี่ยนแปลงโค้ด

git diff --staged   

หรือใช้ --cached ซึ่งเป็นคำพ้องความหมายของ --staged

git diff --cached

หรือดูเฉพาะชื่อไฟล์โดยไม่มีการเปลี่ยนแปลงโค้ด

git diff --staged --name-only  

คู่มือ git-diff

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.