เป็นไปได้ที่จะ `สถานะ git 'เท่านั้นที่แก้ไขไฟล์?


173

เป็นไปได้หรือไม่ที่จะgit statusแสดงเฉพาะไฟล์ที่ถูกดัดแปลง?

ปัญหาคือฉันมีไฟล์ staged มากเกินไปที่ฉันไม่ต้องการคอมมิทหรือ gitignore ในขณะนี้และฉันไม่สามารถเลื่อนขึ้นได้ ฉันมีขีด จำกัด การเลื่อนกลับที่ตั้งไว้บน Ubuntu


1
คุณมีขีด จำกัด การเลื่อนอย่างไร โดยค่าเริ่มต้นgit statusจะเรียกเพจเจอร์
Lily Ballard

ขออภัยขีด จำกัด การเลื่อนกลับตั้งไว้ที่ 512 บรรทัดในเครื่องของฉัน ฉันเดาว่าฉันสามารถเปลี่ยนได้ แต่ต้องการคำสั่งหนึ่งบรรทัดเพื่อดูไฟล์ที่แก้ไขในสถานะเพราะ GD / imagecache จะสร้างไฟล์มากขึ้นในที่สุด
chrisjlee

1
ใช่ ... จุดของฉันคือวิทยุติดตามตัวไม่ได้ใช้ scrollback ของเทอร์มินัล
Lily Ballard

มีอะไรผิดปกติกับเพียงแค่โลภสำหรับสิ่งที่คุณสนใจ? ใช้--shortหรือ--porcelainเพื่อรับสถานะหนึ่งบรรทัด
torek

2
อีกหนึ่งจุดตามข้อเสนอแนะที่จะใช้git ls-files -m: คุณสนใจเรื่องใดเกี่ยวกับการจัดฉากไม่เป็นฉากหรือทั้งสองอย่าง
torek

คำตอบ:


268

คุณไม่สามารถทำได้ด้วยgit statusแต่คุณสามารถใช้git ls-files -mเพื่อแสดงไฟล์ที่แก้ไขทั้งหมด


6
เพื่อให้คนอื่นรู้ว่าสิ่งนี้จะแสดงเฉพาะไฟล์ที่ได้รับการแก้ไขโดยที่ยังไม่มีการจัดฉาก
Gerry

11
แม้ว่านี่จะเป็นคำตอบที่ยอมรับ แต่ก็มีข้อมูลที่ไม่ถูกต้อง คุณสามารถ "'git สถานะ' ไฟล์ที่แก้ไขเท่านั้น" โดยgit status | grep modifiedที่ผู้ใช้ 23186 ระบุไว้ในคำตอบ
K. Alan Bates

9
สำหรับฉันgit ls-files -mไม่ได้แสดงอะไร แต่git status | grep modifiedทำงานอยู่
Sandeepan Nath

1
ดังที่คนอื่น ๆ ชี้ให้เห็นสิ่งนี้จะแสดงเฉพาะไฟล์ที่ไม่มีการจัดฉาก หากคุณต้องการแสดงทั้งไฟล์ที่ไม่ได้รับการจัดเตรียมและจัดฉากนี่เป็นคำตอบที่ดีที่สุดที่ฉันเคยเห็น: stackoverflow.com/a/39994894/452587
thdoan

1
@thdoan มีตัวเลือกมากมายสำหรับการแสดงไฟล์แบบฉากแม้ว่าคำถามเฉพาะนี้ดูเหมือนจะต้องการแยกไฟล์แบบฉากออกอย่างชัดเจน git diff --name-only --diff-filter=M HEADจะแสดงเฉพาะไฟล์ที่ถูกแก้ไขสำหรับทั้งฉากและไม่จัดฉาก แต่คุณควรตรวจสอบเอกสาร--diff-filterเพื่อดูประเภทตัวกรองอื่น ๆ ที่คุณอาจต้องการเพิ่ม
Lily Ballard

57

ดูเหมือนว่าgit status -unoจะแสดงเฉพาะไฟล์ที่คอมไพล์กำลังติดตามโดยไม่แสดงสิ่งอื่นใดในไดเรกทอรี ไม่ใช่สิ่งที่คุณขออย่างแน่นอน แต่อาจทำในสิ่งเดียวกัน (รับรายการความยาวที่สามารถอ่านได้ของไฟล์ที่ git ติดตาม)


1
git status -u noไม่แสดง (1) ไฟล์ที่ถูกติดตามซึ่งมีการดัดแปลงและ (2) ไฟล์ที่ถูกติดตามซึ่งถูกจัดฉาก ฉันได้ตรวจสอบกับ git รุ่น 1.8.5.2 และ 1.9.4
mxxk

2
@TomNysetvold จริง ๆ แล้วคุณอาจหมายถึงgit status -uno( stackoverflow.com/questions/7008546// ))
mxxk


29

สำหรับไฟล์ที่แก้ไข:

git status | grep modified:

1
มีประโยชน์มากฉันได้สร้างนามแฝงสำหรับเรื่องนี้:git config --global alias.modified '!git status | grep modified:'
Richard Parnaby-King

15

git diff --name-only --diff-filter=M


2
ฉันขอแนะนำตัวกรองเหล่านี้: git diff --cached --name-only --diff-filter=ACMRซึ่งเพิ่ม, คัดลอก, แก้ไขและเปลี่ยนชื่อไฟล์
qwertzguy


3

ฉันกำลังมองหาข้อมูลเดียวกันและพบว่าต่อไปนี้ให้ไฟล์ที่แก้ไข:

git status -uno

2
git status -uno --porcelainเพิ่มผลลัพธ์ที่ดีสำหรับการแยกวิเคราะห์สคริปต์
pprzemek


3

ปัญหาคือฉันมีไฟล์ staged มากเกินไปที่ฉันไม่ต้องการคอมมิทหรือ gitignore ในขณะนี้และฉันไม่สามารถเลื่อนขึ้นได้

แม้ว่าสิ่งนี้อาจไม่ตอบคำถามโดยตรงของการแสดงรายการไฟล์ที่ถูกแก้ไขเท่านั้น แต่มันอาจช่วย จำกัด จำนวนไฟล์ที่แสดง

คุณสามารถผ่านเส้นทางไปยังgit statusเพื่อ จำกัด การส่งออกไปยังโฟลเดอร์เฉพาะใน repo

ตัวอย่างเช่น:

git status app
git status spec
git status src/components

2

ในการแสดงรายการไฟล์ที่แก้ไขให้ใช้:

git ls-files -m

หากคุณต้องการเพียงชื่อไฟล์ (ไม่มีพา ธ ) คุณสามารถไพพ์แต่ละผลลัพธ์ไปยังคำสั่ง basename โดยใช้ xargs, ทีละบรรทัด:

git ls-files -m | xargs -L 1 basename

1

ฉันใช้คำสั่งนี้:

$ git status -uno -sb

และผลลัพธ์จะเป็นดังนี้:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h

0

git colaฉันใช้ มันเป็นไคลเอนต์ UI ที่เรียบง่ายและสง่างามที่จะแสดงไฟล์ที่ถูกปรับเปลี่ยนและให้ภาพที่เหมือนการเปลี่ยนแปลงที่คุณทำ

git colaให้ GUI กับคุณซึ่งคุณสามารถเห็นภาพไฟล์ที่คุณแก้ไขซึ่งคุณจัดฉากและแม้กระทั่งไฟล์ที่คุณไม่ได้ติดตาม คำถามของคุณคือใช้สถานะ git เท่านั้นที่ฉันเชื่อ แต่ฉันคิดว่า git cola สามารถช่วยได้เมื่อไหร่และสิ่งอื่นใดเช่นกัน ตรวจสอบหน้าเว็บนี้จากข้อมูลเพิ่มเติม: git-cola.github.com/sc Screenshots.html


1
คุณสามารถให้วิธีการที่เกี่ยวข้องกับคำตอบของฉันให้ฉันไม่คุ้นเคยกับ git cola นี้ เช่นภาพหน้าจอหรือรายละเอียดเพิ่มเติม?
chrisjlee

นั่นคือเหตุผลที่ถูกลดระดับลง? :) อย่างไรก็ตาม git cola ให้ GUI กับคุณซึ่งคุณสามารถเห็นภาพไฟล์ที่คุณแก้ไขซึ่งคุณจัดฉากและแม้แต่ไฟล์ที่คุณไม่ได้ติดตาม คำถามของคุณคือใช้สถานะ git เท่านั้นที่ฉันเชื่อ แต่ฉันคิดว่า git cola สามารถช่วยได้เมื่อไหร่และสิ่งอื่นใดเช่นกัน ตรวจสอบหน้าเว็บนี้จากข้อมูลเพิ่มเติม: git-cola.github.com/sc Screenshots.html
n_x_l

จะเปลี่ยนภาษาอินเทอร์เฟซของโคล่าได้อย่างไร?
ziyuang


0

ในการแสดงรายการไฟล์ที่แก้ไขทั้งหมดให้ใช้:

git show --stat --oneline HEAD

0

คำตอบที่ดีทั้งหมด เพียง FEI "เช็คเอาต์ git" (เปลี่ยนเป็นหรือในสาขาเดียวกัน) ปรากฏขึ้นเพื่อแสดงเฉพาะไฟล์ที่แก้ไข


0

ระบบปฏิบัติการ: windows

คำสั่งต่อไปนี้จะแสดงบรรทัดทั้งหมดที่มี"แก้ไข:" , "เปลี่ยนชื่อ:"หรือ"ไฟล์ใหม่:"

git status | findstr "modified: renamed: new file:"

หากคุณต้องการระบุประเภทไฟล์: (เช่น*.py *.ini)

git status *.py *.ini | findstr "modified: renamed: new file:"

หากคุณคิดว่ามันเป็นปัญหาที่พิมพ์มากเกินไป:

  1. สร้างไฟล์ชุด (ตัวอย่างเช่น: st.bat)

  2. เขียนเนื้อหาดังต่อไปนี้:

    @echo off
    :: st.bat  (this line doesn't necessarily. ( just let you know the scripts name.))
    git status %~1 | findstr "modified: renamed: new file:"
    
  3. เพิ่มเส้นทางสภาพแวดล้อมที่มีไฟล์แบตช์ของคุณ ( st.bat)

  4. การใช้

    st.bat "*.py *.ini"
    

    (หมายเหตุ: ถ้าพิมพ์> 1 จะต้องเพิ่มเครื่องหมายอัฒภาค)

ระบบปฏิบัติการ: LINUX

@Lance บอกว่าคุณสามารถลอง

git status | grep modified:

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