Git เพิ่มไฟล์ทั้งหมดที่ถูกแก้ไขลบและไม่ได้ติดตาม?


256

มีวิธีเพิ่มไฟล์ทั้งหมดไม่ว่าคุณจะทำอะไรไม่ว่าจะถูกลบไม่ได้ติดตามหรือไม่ ชอบการกระทำ ฉันไม่ต้องการให้ไฟล์ทั้งหมดของฉันgit addหรือgit rmทุกครั้งที่ฉันกระทำโดยเฉพาะเมื่อฉันทำงานกับผลิตภัณฑ์ที่มีขนาดใหญ่


คำตอบ:


307

ลอง:

git add -A

คำเตือน:เริ่มต้นด้วยคอมไพล์ 2.0 (กลาง 2013) นี้จะเสมอไฟล์เวทีบนต้นการทำงานทั้งหมด
หากคุณต้องการจัดไฟล์ภายใต้เส้นทางปัจจุบันของแผนผังการทำงานของคุณคุณต้องใช้:

git add -A .

ดูเพิ่มเติมที่: ความแตกต่างของgit add -Aและgit add .


สิ่งนี้ไม่ได้ผลสำหรับฉัน ... ฉันจะแสดงเทอร์มินัลอินพุต - เอาต์พุตในการสนทนานี้ได้อย่างไร คัดลอกวางเทอร์มินัลผลลัพธ์ของฉันเป็นคำตอบสำหรับการสนทนานี้หรือไม่
Rakib

นี่เป็นปัญหาที่ฉันหันหน้าไปทาง - stackoverflow.com/q/7726131/636762 - ความช่วยเหลือกรุณาฉันบนนี้โปรด
Rakib

สิ่งนี้ยังใช้ไม่ได้หากเวอร์ชัน git ของคุณเก่า ฉันใช้งานสคริปต์บนเซิร์ฟเวอร์ที่ใช้ git 1.5.2.5 git add -A ไม่ทำงาน จากสคริปต์ไม่มีรายงานข้อผิดพลาด ฉันพบเฉพาะจากบรรทัดคำสั่งว่า -A ไม่ใช่ตัวเลือกทางกฎหมายที่จะเพิ่ม
Eponymous

แต่ทำไมฉันต้องเพิ่มไฟล์ทุกครั้งที่ฉันต้องการคอมมิท!? ทุกครั้งที่ฉันทำการเปลี่ยนแปลงไฟล์ฉันจะต้องเพิ่มมัน ..
Frade

3
นี่เป็นเพียงวิธีการทำงานของ Git คุณต้องเพิ่มการเปลี่ยนแปลงในพื้นที่การแสดงละครก่อนที่จะส่งมอบ ตัวอย่างเช่นคุณสามารถเพิ่มได้เพียงบางไฟล์ในการส่งและให้ความคิดเห็นแทนไฟล์ทั้งหมดตลอดเวลา นี่คือคำอธิบายที่มีประโยชน์เกี่ยวกับสิ่งที่ทำและเหตุผล: gitready.com/beginner/2009/01/18/the-staging-area.html
Kilanash

75

ลอง

git add -u

"การuเลือก" ย่อมาจากการปรับปรุง สิ่งนี้จะอัปเดต repo และลบไฟล์จริงจาก repo ที่คุณลบในโลคอลของคุณ

git add -u [filename]

เพื่อสเตจการลบเป็นไฟล์เดียว เมื่อผลักแล้วไฟล์จะไม่อยู่ใน repo อีกต่อไป

อีกวิธีหนึ่งคือ

git add -A .

เทียบเท่ากับ

git add .

git add -u .

บันทึกส่วนเสริม '.' บนgit add -Aและgit add -u


คำเตือน:เริ่มต้นด้วยคอมไพล์ 2.0 (กลาง 2013) นี้จะเสมอไฟล์เวทีบนต้นการทำงานทั้งหมด
หากคุณต้องการจัดไฟล์ภายใต้เส้นทางปัจจุบันของแผนผังการทำงานของคุณคุณต้องใช้:

git add -A .

ดูเพิ่มเติมที่: ความแตกต่างของgit add -Aและgit add .


42

คำตอบต่อไปนี้ใช้ได้กับ Git เวอร์ชัน 1.x เท่านั้น แต่ใช้กับ Git เวอร์ชัน 2.x

คุณต้องการgit add -A:

git add -A ขั้นตอนทั้งหมด;

git add . ขั้นตอนใหม่และแก้ไขโดยไม่ถูกลบ

git add -u ขั้นตอนการแก้ไขและลบโดยไม่ใหม่


หมายเหตุข้างต้นใช้กับ Git 1.x เท่านั้น สำหรับรุ่นคอมไพล์ 2.x, เทียบเท่ากับgit add -A git add .ดูที่นี่สำหรับการสนทนาเพิ่มเติม
jdhao

27

git add --all หรือ git add -A หรือ git add -A . ขั้นตอนทั้งหมด

git add . ขั้นตอนใหม่ & แก้ไขแต่ไม่ถูกลบ

git add -u ขั้นตอนการแก้ไข & ถูกลบแต่ไม่มีใหม่

git commit -aหมายถึงgit add -uและgit commit -m "message"

หลังจากเขียนคำสั่งนี้ทำตามขั้นตอนเหล่านี้: -

  1. กด i
  2. เขียนข้อความของคุณ
  3. กด esc
  4. กด :wq
  5. กด enter

git add <list of files> เพิ่มไฟล์เฉพาะ

git add *.txt เพิ่มไฟล์ txt ทั้งหมดในไดเรกทอรีปัจจุบัน

git add docs/*/txt เพิ่มไฟล์ txt ทั้งหมดในไดเรกทอรีเอกสาร

git add docs/ เพิ่มไฟล์ทั้งหมดในไดเรกทอรีเอกสาร

git add "*.txt"หรือgit add '*.txt'เพิ่มไฟล์ทั้งหมดในโครงการทั้งหมด


12

ฉันไม่แน่ใจว่ามันจะเพิ่มไฟล์ที่ถูกลบหรือไม่ แต่git add .จากรูทจะเพิ่มไฟล์ที่ไม่ได้ติดตามทั้งหมด


ดูคำตอบของฉันเกี่ยวกับวิธีการเพิ่มไฟล์ที่ลบ
Matt Kneiser

5

นี่คือทางเลือกของฉัน (ใน bash ใด ๆ ):

$ git status -s|awk '{ print $2 }'|xargs git add

เพื่อทำการรีเซ็ต

$ git status -s|awk '{ print $2 }'|xargs git reset HEAD

5

ฉันเขียนโครงการ G2 ซึ่งเป็นสภาพแวดล้อมที่เป็นมิตรสำหรับคนรักคอมไพล์บรรทัดคำสั่ง
กรุณารับโครงการจาก github - G2 https://github.com/orefalo/g2

มันมีคำสั่งที่ใช้งานง่ายหนึ่งในนั้นคือสิ่งที่คุณต้องการ: freeze

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


5

สำหรับรุ่นที่ใหม่กว่า Git

ฉันพยายามgit add -Aและสิ่งนี้ได้รับแจ้ง

คำเตือน: พฤติกรรมของ 'git add --all (หรือ -A)' โดยไม่มีอาร์กิวเมนต์พา ธ จากไดเรกทอรีย่อยของต้นไม้จะเปลี่ยนใน Git 2.0 และไม่ควรใช้อีกต่อไป ในการเพิ่มเนื้อหาสำหรับทั้งต้นให้รัน:

git add - all: / (หรือ git add -A: /)

ในการ จำกัด คำสั่งให้อยู่ในไดเรกทอรีปัจจุบันให้รัน:

คอมไพล์เพิ่ม - ทั้งหมด (หรือ git เพิ่ม -A.)

ด้วยเวอร์ชัน Git ปัจจุบันคำสั่งจะถูก จำกัด ไปยังไดเรกทอรีปัจจุบัน


จากนั้นฉันลองด้านล่างซึ่งใช้งานได้

git add --all :/

3

จากเอกสาร Git เริ่มต้นจากรุ่น 2.0:

ในการเพิ่มเนื้อหาสำหรับทั้งต้นให้รัน:

git add --all :/

หรือ

git add -A :/

ในการ จำกัด คำสั่งให้อยู่ในไดเรกทอรีปัจจุบันให้รัน:

git add --all .

หรือ

git add -A .

2

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

git add $(git ls-files -mo --exclude-standard)

(ไวยากรณ์ $ () สำหรับเชลล์ bash) ฉันเดาว่าตัวเลือกบรรทัดคำสั่ง -mod ควรเพิ่มไฟล์ที่ถูกลบด้วย ... หรือถ้าคุณมีชื่อไฟล์ที่มีช่องว่างในตัวการซับหนึ่งตัวต่อไปนี้ควรทำเคล็ดลับ:

git ls-files -z --deleted --modified --others --exclude-standard | xargs -0 git add
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.