Почему git commit -a не добавляет новые файлы? - PullRequest
32 голосов
/ 03 мая 2010

Я немного новичок в git и не понимаю, почему git commit -a изменились только этапы и удалены файлы, но не новые файлы.

Может кто-нибудь объяснить, почему это так, и почему нет другого флага коммита, позволяющего добавлять файлы и фиксировать в одной команде ?

Кстати, hg commit -A добавляет в коммит как новые, так и удаленные файлы

Ответы [ 5 ]

18 голосов
/ 03 мая 2010

Git - это отслеживание изменений . Он полагается на то, что вы сообщаете ему, какие файлы достаточно важны для отслеживания. Вы можете достичь желаемого эффекта следующим образом:

git add . ;git commit -a

Убедитесь, что ваш .gitignore файл обновлен.

11 голосов
/ 10 июля 2012

Я предлагаю другое решение: использование git commit --interactive -m "your commit message" покажет вам это меню

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff   7: [q]uit   8: [h]elp

, позволяющее проверять статус, добавлять неотслеживаемые файлы и т. Д. С помощью простых нажатий клавиш.

7 голосов
/ 12 мая 2013

Я подозреваю, что ответ прост (но я сомневаюсь, что я буду популярен, если скажу это!) - вероятно, нет никакого преднамеренного «почему», за исключением того, как это случилось, когда разработчики реализовали это. Приоритетом проекта Git никогда не было простота использования или удобство использования.

6 голосов
/ 03 мая 2010

Келли прав, но я думаю, что другой фактор заключается в том, что так много людей ожидают такого поведения, потому что CVS, Subversion и большинство других инструментов делают это таким образом.

Если Git зафиксировал новые файлы, вы могли заметить, что вы зафиксировали .o файлы давно, и, что еще хуже, они могут повредить сборку.

0 голосов
/ 29 июня 2017

Ради будущего вы можете придерживаться этого решения от Ian Clelland ,

git add -A && git commit -m "Your Message"

Так как это не будет слишком видно из комментария https://stackoverflow.com/a/2419270/5836034

...