Подтвердить что ты не робот

Должен ли я добавлять файлы в git каждый раз, когда я хочу совершить?

Я новичок в git, исходя из мира SVN. Пока это кажется намного более полезным, но я все еще разрабатываю изломы.

В настоящее время мой рабочий процесс выглядит следующим образом:

внести изменения > git добавить. > git commit > ввести сообщение журнала

Я не понимаю, почему я, кажется, должен добавить все мои файлы до того, как я их совершу. Они уже находятся под управлением версиями? Почему git commit сообщает мне, что изменений не добавлено в коммит, но также указывается, что у меня есть модифицированные файлы? В нем говорится: "Изменено, но не обновлено:". Что это значит?

Извините, если это легко, я чувствую, что мне не хватает какой-то всеобъемлющей точки.

4b9b3361

Ответ 1

Это позволяет вам разделять фиксации путем редактирования. Если вы хотите только зафиксировать эти файлы сейчас, под одной фиксацией, а затем с этими следующими файлами, под второй фиксацией вы можете сделать:

git add files_under_one_topic
git commit -m "this is about one thing"

git add files_left_over_to_commit_about_a_completely_different_topic
git commit -m "this is about another thing."

Ответ 2

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

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

Если вы хотите просто скопировать вещи, которые вы изменили, но не включаете вновь созданные файлы, вы можете использовать git commit -a -m "Комментарий для измененных файлов, уже находящихся под контролем источника".

Ответ 3

Вы не добавляете файлы в том смысле, что вы помещаете их под элемент управления git, но вы добавляете их в список изменений. Некоторые другие SCM, такие как perforce, тоже делают это. Это удобно для создания различных наборов изменений, которые вы еще не готовы к фиксации, но вы хотите зафиксировать их в отдельных блоках.

Вы можете совершать более subversionish способом, просто делая git commit -a -, который передаст все, что знает git об этом, как и то, что делает svn commit.

(PS. Поскольку вы пришли из мира svn, я упомянул еще одну полученную информацию, которая бросила меня на цикл для бит - когда вы git diff, он будет показывать только разницу между вашим текущим состоянием и что находится в списке изменений, а не разница между текущим состоянием и последним фиксацией. Если вы запустите git diff сразу после добавления всех измененных файлов (например, git add -u), вы увидите пустой diff, хотя есть отличия, которые необходимо совершить!)