Git статус немного сбивает с толку - PullRequest
3 голосов
/ 04 декабря 2009

Git сообщает о следующем статусе в одной из моих веток:

# On branch awesome
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       new file:   NEW.txt
#
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#
#       modified:   NEW.txt
#

Это произошло потому, что я создал NEW.txt, а затем приказал:

git add NEW.txt

и позже отредактировал файл. Означает ли это, что выполнение git commit подтвердит последние внесенные в файл изменения, или мне следует проявить особую осторожность?

Ответы [ 3 ]

9 голосов
/ 04 декабря 2009

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

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

5 голосов
/ 04 декабря 2009

Содержимое версий Git, а не файлы. Таким образом, содержимое во время git add будет зафиксировано со следующим подтверждением.

4 голосов
/ 04 декабря 2009

В случае, который вы описали, если вы сделаете git commit, вы будете фиксировать изменения, которые были сделаны до того, как вы сделали git add (что, возможно, создавало только пустой файл), а не те, что после. Вы можете использовать git diff, чтобы увидеть различия:

git diff

показывает разницу между вашей рабочей копией и индексом , тогда как

git diff --cached

показывает различия между индексом и ГОЛОВКОЙ. Различия, показанные git diff --cached, - это то, что будет зафиксировано в git commit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...