คอมมิต -a“ ไฟล์ที่ไม่ถูกติดตาม”?


93

เมื่อฉันทำ a git commit -aฉันเห็นสิ่งต่อไปนี้:

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  # On branch better_tag_show
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  # modified:   ../assets/stylesheets/application.css
  # modified:   ../views/pages/home.html.erb
  # modified:   ../views/tags/show.html.erb
  # modified:   ../../db/seeds.rb
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  # ../assets/stylesheets/
  # ../views/pages/

ไฟล์ที่ไม่ถูกติดตามเหล่านั้นหมายถึงอะไร? การเปลี่ยนแปลงทั้งหมดได้รับการติดตามอย่างแท้จริง ฉันไม่เข้าใจว่าทำไม git ถึงเตือนฉันเกี่ยวกับไฟล์ที่ไม่ได้ติดตามที่นี่

แก้ไข :

โอเคฉันเห็นคำตอบที่สับสนมากมาย นี่คือสิ่งที่เกิดขึ้นหลังจากgit commit -aนี้

# On branch master
nothing to commit (working directory clean)

อย่างที่คุณเห็นไม่มีอะไรอื่นนอกจากสี่ไฟล์ที่มีการเปลี่ยนแปลงที่นำไปใช้

คำถามของฉันควรได้รับการเรียบเรียงใหม่ดังนี้เหตุใดคอมไพล์จึงเตือนฉันเกี่ยวกับไฟล์ที่ไม่ได้ติดตามเมื่อมีการติดตามการเปลี่ยนแปลงทั้งหมดในคอมมิตนี้

กล่าวอีกนัยหนึ่งคำเตือนที่ไม่ได้รับการติดตามในข้อความคอมมิตไม่จำเป็นหรือไม่ ?


1
(use "git add <file>..." to include in what will be committed)
zengr

1
zengr ที่ไม่จำเป็นเพราะ git กระทำ -a จะคอมมิตการเปลี่ยนแปลงทั้งหมดในไฟล์ที่ถูกติดตาม
หายตัวไป

3
มันเป็นสิ่งที่จำเป็นเมื่อไฟล์ที่ไม่เคยได้รับadded จนถึงขณะนี้ จากเอกสารสำหรับ-a: บอกคำสั่งไปยังไฟล์ขั้นตอนโดยอัตโนมัติที่ได้รับการแก้ไขและลบ แต่ไฟล์ใหม่ที่คุณไม่ได้บอกเกี่ยวกับคอมไพล์จะไม่ได้รับผลกระทบ
Noufal Ibrahim

ทำไมคุณถึงพูดว่า git คือ 'คำเตือน' คุณ? ตามที่ฉันเห็นข้อความไฟล์ "ไม่ถูกติดตาม" เป็นข้อมูลที่ให้ข้อมูล มีไว้เพื่อให้คุณดูว่าไฟล์เหล่านั้นจำเป็นต้องได้รับการจัดการและดำเนินการตามนั้นหรือไม่
sateesh

@sateesh ไม่ว่าคุณจะเรียกมันว่าอะไรก็ตามฉันยังไม่คิดว่าสิ่งนี้จะมีประโยชน์จริงๆ ข้อมูลนี้เป็นอย่างไร ฉันควรจะทำอย่างไร? คุณอ่านโพสต์ของฉันในส่วน "แก้ไข" ที่ฉันเขียนว่าไม่มีการแก้ไขใด ๆ ในไฟล์อื่น ๆ ยกเว้นที่ระบุไว้ข้างต้น หากคุณพบข้อมูลนี้ก็เท่ากับว่าฉันบอกคุณว่าโฟลเดอร์สุ่มใด ๆ บนโครงสร้าง repo ของคุณจะไม่ถูกติดตามเมื่อไม่มีอะไรต้องกังวล
หายตัวไป

คำตอบ:


105

สำหรับคนอื่น ๆ ที่มีปัญหาเดียวกันให้ลองเรียกใช้

git add . ซึ่งจะเพิ่มไฟล์ทั้งหมดของไดเร็กทอรีปัจจุบันเพื่อติดตาม (รวมถึงไม่ถูกติดตาม) จากนั้นใช้

git commit -a เพื่อคอมมิตไฟล์ที่ติดตามทั้งหมด

ตามคำแนะนำของ @Pacerier หนึ่งซับที่ทำเหมือนกันคือ

git add -A


5
git commit -aจะส่งไฟล์ที่ติดตามทั้งหมดไม่ใช่ติดตามไฟล์ที่ไม่ถูกติดตาม git add .จะติดตามไฟล์ที่ไม่ถูกติดตามในไดเร็กทอรีปัจจุบัน git add -aจะติดตามไฟล์ที่ไม่ได้ติดตามทั้งหมด
ที่นี่

@matteo ก็ไม่ได้git add -A git commit -Aเท่าที่ฉันบอกได้ไม่มีสวิตช์ใดที่คุณสามารถส่งผ่านไปได้git commitซึ่งรวมถึงไฟล์ที่ไม่ได้ติดตาม
Len

1
- ดูเหมือนจะเลิกใช้งานไปแล้วในตอนนี้ A ขอบคุณทุกคนเหมือนกัน :)
tcratius

สำหรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับคำสั่งเหล่านั้นคุณสามารถตรวจสอบ: stackoverflow.com/questions/572549/…
Onat Korucu

30

git commit -am "msg"ไม่เหมือนกับgit add fileและgit commit -m "msg"

หากคุณมีไฟล์บางไฟล์ที่ไม่เคยเพิ่มในการติดตามคอมไพล์คุณยังต้องทำ git add file

คำสั่ง "คอมมิต -a" เป็นทางลัดไปยังกระบวนการสองขั้นตอน หลังจากที่คุณแก้ไขไฟล์ที่ repo รู้จักแล้วคุณยังต้องบอก repo ว่า“ เฮ้! ฉันต้องการเพิ่มสิ่งนี้ลงในไฟล์ที่จัดฉากและส่งมอบให้คุณในที่สุด” ซึ่งทำได้โดยการออกคำสั่ง“ git add” “ คอมมิต -a” กำลังจัดเตรียมไฟล์และคอมมิตในขั้นตอนเดียว

ที่มา: "git comm -a" และ "git add"


แต่อย่างที่คุณพูด git คอมมิต -a = git add + คอมมิตทำไมมันไม่เพิ่มไฟล์อัตโนมัติลงในพื้นที่ติดตาม ?? ....
จอห์นนี่

1
@Johnny: git commit -aไม่เท่ากับ+git add . ขั้นตอนเพิ่มเฉพาะไฟล์ที่มีการระบุไว้แก้ไขในของคุณทุกอย่างไม่ได้อยู่ในไดเรกทอรีปัจจุบัน git commitgit addgit status
Soren

ใช่ฉันค้นพบว่าวันนี้!
KansaiRobot

9

คุณควรพิมพ์ลงในบรรทัดคำสั่ง

git add --all

สิ่งนี้จะส่งไฟล์ที่ไม่ถูกติดตามทั้งหมด

แก้ไข:

หลังจากจัดเตรียมไฟล์ของคุณแล้วพวกเขาก็พร้อมสำหรับการคอมมิตดังนั้นคำสั่งถัดไปของคุณควรเป็น

git commit -am "Your commit message"

5
นี้ขั้นตอนการไฟล์ทั้งหมดไม่กระทำพวกเขา คุณยังต้องทำอีกต่างหาก
แสบอามินี

8
  1. ก่อนอื่นคุณต้องเพิ่มไฟล์ที่ไม่ได้ติดตามทั้งหมด ใช้บรรทัดคำสั่งนี้:

    git add *

  2. จากนั้นยอมรับโดยใช้บรรทัดคำสั่งนี้:

    git commit -a


7

หากคุณประสบปัญหากับไฟล์ที่ไม่ถูกติดตามสคริปต์ 3 บรรทัดนี้จะช่วยคุณได้

git rm -r --cached .
git add -A
git commit -am 'fix'

จากนั้นเพียง git push


สิ่งนี้สำหรับฉันเพราะฉันต้องการยกเลิกการติดตามไฟล์ที่ติดตามซึ่งตอนนี้ฉันไม่สนใจ
spyder man

3

ตามชื่อที่ระบุว่า 'ไฟล์ที่ไม่ได้ติดตาม' คือไฟล์ที่ไม่ถูกติดตามโดย git พวกเขาไม่ได้อยู่ในพื้นที่จัดเตรียมของคุณและไม่ได้เป็นส่วนหนึ่งของการกระทำใด ๆ ก่อนหน้านี้ หากคุณต้องการให้เป็นเวอร์ชัน (หรือจัดการโดย git) คุณสามารถทำได้โดยบอก 'git' โดยใช้ 'git add' ตรวจสอบบทนี้การบันทึกการเปลี่ยนแปลงที่เก็บข้อมูลในหนังสือProgitซึ่งใช้ภาพที่สวยงามเพื่อให้คำอธิบายที่ดีเกี่ยวกับการบันทึกการเปลี่ยนแปลงใน git repo และยังอธิบายคำว่า 'tracked' และ 'unracked'


1
+1 สำหรับการอ้างอิงถึง progit โปรดอัปเดต URL เป็น v2 git-scm.com/book/en/v2และgit-scm.com/book/en/v2/…
stefan123t

เสร็จสิ้นอัปเดตการอ้างอิงถึง Progit
sateesh

0

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


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