Почему «git commit» не сохраняет мои изменения? - PullRequest
246 голосов
/ 09 октября 2011

Я сделал git commit -m "message", как это:

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Но потом, когда я делаю git status, он показывает те же измененные файлы:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Что я делаю не так?

Ответы [ 12 ]

386 голосов
/ 09 октября 2011

Как говорится в сообщении:

изменения не добавлены в коммит (используйте "git add" и / или "git commit -a")

В Git есть «промежуточная область», в которую необходимо добавить файлы перед фиксацией. Вы можете прочитать объяснение здесь .


Для вашего конкретного примера вы можете использовать:

git commit -am "save arezzo files"

(обратите внимание на дополнительные a в флагах, также можно записать как git commit -a -m "message" - оба делают одно и то же)

В качестве альтернативы, если вы хотите быть более избирательным в отношении того, что вы добавляете в коммит, вы используете команду git add , чтобы добавить соответствующие файлы в область подготовки, и git status для предварительного просмотра того, что будет добавлено (не обращая внимания на используемую формулировку).

Вы также можете найти общую документацию и руководства по использованию git на странице документации git , которая более подробно расскажет о концепции размещения / добавления файлов.


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

47 голосов
/ 09 октября 2011

Вы не добавили изменения.Либо специально добавьте их через

git add filename1 filename2

, либо добавьте все изменения (из корневого пути проекта)

git add .

, либо используйте сокращение -a при совершении:

git commit -a -m "message".
39 голосов
/ 09 октября 2011

Вы должны сделать:

git commit . -m "save arezzo files"
7 голосов
/ 22 мая 2013

Вы могли бы сделать:

git add -u -n

Чтобы проверить, какие файлы вы изменили и собираетесь добавить (пробный запуск: -n опция), а затем

git add -u

Чтобы добавить только что измененные файлы

7 голосов
/ 25 июля 2012

Я скопировал небольшой подпроект, который у меня был под управлением исходного кода Git, в другой проект и забыл удалить папку .git. Когда я пошел к фиксации, я получил то же сообщение, что и выше, и не мог его очистить, пока не удалил папку .git.

Это немного глупо, но стоит проверить, что у вас нет папки .git в папке, которая не фиксируется.

4 голосов
/ 22 марта 2017

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

rm -rf .git

В моем случае у меня было приложение WordPress, и папка, которую я добавил внутри, была темой. Поэтому мне пришлось перейти в корень темы и удалить файл Git, чтобы весь проект теперь отслеживался родителем, приложением WordPress.

4 голосов
/ 15 апреля 2014

Эта проблема появляется, когда я выполнил git add . в подкаталоге ниже , где находится мой файл .gitignore (так сказать, домашний каталог моего хранилища). Попробуйте изменить каталоги на ваш самый верхний каталог и запустить git add ., а затем git commit -m "my commit message".

4 голосов
/ 11 декабря 2011

Может быть, очевидная вещь, но ...

Если у вас проблемы с индексом, используйте git-gui . Вы получите очень хорошее представление о том, как на самом деле работает индекс (область подготовки).

Другим источником информации, который помог мне понять индекс, был Скотт Чэконс «Getting Git», страница 259. и далее.

Я начал с командной строки, потому что большая часть документации показала, что ...

Я думаю, что git-gui и gitk на самом деле заставляют меня работать быстрее, и я избавился от вредных привычек, таких как, например, "git pull" ... Теперь я всегда выбираю первым ... Посмотрите, какие новые изменения действительно есть, прежде чем слияния.

1 голос
/ 24 февраля 2019

если у меня больше файлов в моем случае, у меня 7000 файлов изображений , когда я пытаюсь добавить их из папки маршрута проекта, он не добавляет их, но когда я иду в папку изображений, все в порядке. Пройдите в целевую папку и введите команду abows

git add .
git commit -am "image uploading"
git push origin master

git push origin master Перечисление объектов: 6574, сделано. Подсчет объектов: 100% (6574/6574), сделано. Дельта-сжатие с использованием до 4 Сжатие нитей объектов: 100% (6347/6347), сделано. Написание объектов: 28% (1850/6569), 142,17 МиБ | 414,00 КиБ / с

0 голосов
/ 18 ноября 2018

если у вас есть подпапка, которая была клонирована из другого git-репозитория, сначала вы должны удалить файл $ .git $ из дочернего репозитория: rm -rf .git после этого вы можете перейти в родительскую папку и использовать git add -A.

...