it-swarm.com.ru

Почему "git commit" не сохраняет мои изменения?

Я сделал 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")

Что я делаю неправильно?

238
arezzo

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

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

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


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

git commit -am "save arezzo files"

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

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

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


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

383
Peter Boughton

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

git add filename1 filename2

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

git add .

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

git commit -a -m "message".
47
Femaref

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

git commit . -m "save arezzo files"
38
Baptiste Pernet

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

git add -u -n

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

git add -u

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

7
Albert Vonpupp

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

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

7
Simon Hutchison

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

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

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

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

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

4
Martin

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

rm -rf .git

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

4
drjorgepolanco

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

4
jam99

если у меня есть больше файлов в моем случае, у меня есть 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
physcode

У меня была очень похожая проблема с тем же сообщением об ошибке. «Изменения не сделаны для коммита», но когда я делаю разницу, это показывает различия. Я наконец понял, что некоторое время назад я изменил дело с каталогами. ех. «PostgeSQL» - «postgresql». Как я сейчас помню, иногда git оставляет один или два файла в старом каталоге case. Затем вы передадите новую версию новому делу.

Таким образом, мерзавец не знает, на кого положиться. Чтобы решить эту проблему, я должен был зайти на сайт GitHub. Тогда вы сможете просмотреть оба случая. И вы должны удалить все файлы в неправильном каталоге. Убедитесь, что у вас сохранена правильная версия в правильном каталоге.

Как только вы удалили все файлы в старом каталоге, весь этот каталог исчезнет. Затем сделайте коммит.

На этом этапе вы сможете выполнять Pull на локальном компьютере и больше не видеть конфликтов. Таким образом, возможность совершить снова. :)

0
brianwaganer

У меня была проблема, когда я делал commit --amend даже после выдачи git add ., и она все еще не работала. Оказывается, я сделал несколько .vimrc настроек, и мой редактор не работал правильно. Исправление этих ошибок, чтобы vim возвращал правильный код, разрешивший проблему.

0
Brennan Cheung

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

0
Sam Toorchi