Git commit -a “невідстежені файли”?


92

Коли я це роблю 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)

Як бачите, нічого, крім тих чотирьох файлів, до яких були застосовані зміни, НІЧОГО немає.

Моє запитання слід переформулювати таким чином: Чому git попереджає мене про файли, що не відслідковуються, коли всі зміни в цьому коміті відстежено?

Іншими словами, це неотслежіваемих попередження в мерзотника повідомлення фіксації непотрібними ?


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

1
zengr, що не є необхідним, оскільки git commit -a зафіксує всі зміни у файлах, які відстежувались.
зник

3
Це є необхідним , коли файли ніколи не були addед досі. З документації для -a: Скажіть команді, щоб вона автоматично інсценувала файли, які були змінені та видалені, але нові файли, про які ви не повідомляли git, не впливають .
Noufal Ibrahim

Чому ви говорите, що git "попереджає" вас? Як мені здається, повідомлення про "відстежені" файли є інформаційним. Ви повинні побачити, чи потрібно керувати цими файлами, і діяти відповідно.
sateesh

@sateesh Ну, як би ти не хотів це називати, я все одно не думаю, що це насправді корисно взагалі. Як це інформативно? Що я повинен робити? Чи читали ви мій допис у розділі "РЕДАКТУВАТИ", де я писав, що жоден інший файл не змінюється, крім перелічених вище? Якщо ви знайдете цю інформативну інформацію, це еквівалентно тому, що я скажу вам, що будь-яка випадкова папка у вашому дереві репо не буде відстежуватися, коли немає про що турбуватися.
зник

Відповіді:


105

Для інших, хто має таку ж проблему, спробуйте запустити

git add . який додасть усі файли поточного каталогу для відстеження (включаючи відстежувані), а потім використає

git commit -a для фіксації всіх відстежуваних файлів.

Як пропонує @Pacerier, один лайнер, який робить те саме, є

git add -A


4
git commit -aбуде фіксувати всі відстежувані файли, а не відстежувати невідстежені файли. git add .буде відстежувати невідстежені файли в поточному каталозі. git add -aбуде відстежувати всі файли, що не відстежуються.
тут

@matteo це git add -A, ні git commit -A. Наскільки я можу зрозуміти, немає жодного перемикача, до якого можна перейти, git commitякий би включав невідстежені файли.
Лен

1
-a, здається, застаріло лише на A зараз. Дякую, все одно. :)
tcratius

Для подальшого розуміння про ці команди, ви можете перевірити: stackoverflow.com/questions/572549 / ...
ОНАТ Korucu

30

git commit -am "msg"не те саме, що git add fileіgit commit -m "msg"

Якщо у вас є деякі файли, які ніколи не були додані до git-відстеження, вам все одно потрібно це зробити git add file

Команда “git commit -a” - це ярлик двоступеневого процесу. Після того, як ви змінили файл, який уже відомий репозитарієм, вам все одно доведеться сказати репозиторію: «Гей! Я хочу додати це до інсценізованих файлів і врешті-решт призначити вам ». Це робиться за допомогою команди “git add”. “Git commit -a” інсценізує файл і робить його одним кроком.

Джерело: "git commit -a" та "git add"


але, як ви вже сказали git commit -a = git add. + git commit, чому б йому не додати файл автоматично до області відстеження ?? ....
Джонні,

1
@Johnny: git commit -aне дорівнює git add .+ git commit. git addКрок додає тільки ті файли , які відображаються в вигляді модифіковані в ваших git status, а не всі в поточному каталозі.
Soren Bjornstad

Так, я це сьогодні виявив!
KansaiRobot

9

Вам слід ввести в командний рядок

git add --all

Це призведе до відстеження всіх файлів, що не відстежуються

Редагувати:

Після індексування ваших файлів вони готові до коміту, тому має бути наступна команда

git commit -am "Your commit message"

5
Це виконує поетапність усіх файлів, а не їх фіксацію . Вам все одно доведеться робити це окремо.
Саїб Amini

8
  1. Спочатку потрібно додати всі файли, що не відстежуються. Використовуйте цей командний рядок:

    git add *

  2. Потім виконайте коміт за допомогою цього командного рядка:

    git commit -a


7

Якщо у вас проблеми з файлами, що не відстежуються, цей 3-рядковий скрипт вам допоможе.

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

Тоді просто git push


Це стає для мене тим, що мені потрібно було відстежувати відстежувані файли, які я зараз ігнорую.
шпигун

2

Як випливає з назви, "невідстежені файли" - це файли, які не відстежуються git. Вони не знаходяться у вашій проміжній зоні та не входили до жодних попередніх комітетів. Якщо ви хочете, щоб вони були версіями (або ними керував git), ви можете зробити це, сказавши 'git', використовуючи 'git add'. Перегляньте цей розділ Запис змін до сховища в книзі Progit, де використовується приємний візуал, щоб надати гарне пояснення щодо запису змін у git repo, а також пояснити терміни "відстежено" та "не відстежено"


0

Переконайтеся, що ви знаходитесь у правильному каталозі (основна папка сховища) у вашому локальному git, щоб він міг знайти конфігурацію папки .git, перш ніж фіксувати або додавати файли.


Це не дає відповіді на запитання. Щоб критикувати або вимагати роз’яснень від автора, залиште коментар під його публікацією. - З огляду
sampathsris

-1
git add --all

Це вирішить файл, який не відстежується. Додайте весь файл до каталогу завдяки @travis delly


Цю відповідь уже пропонували.
Пер Свенссон

не могли б ви видалити голос проти, тоді я видалю свою відповідь
лава
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.