Мне придется добавить файлы к мерзавцу каждый раз, когда я хочу фиксировать?

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

В настоящее время мой рабочий процесс похож на это:

внесите изменения>, мерзавец добавляет.> фиксация мерзавца> вводят сообщение журнала

То, что я не понимаю, - то, почему я, кажется, должен добавить все свои файлы, прежде чем я буду фиксировать. Они уже являются объектом управления версиями? Почему фиксация мерзавца говорит мне, что нет никаких изменений, добавленных к фиксации, но также и не указывают, что я изменил файлы? Это говорит "Измененный, но не обновленное":. что это означает??

Извините, если это легко, я чувствую, что упускаю некоторую всеобъемлющую суть

58
задан Hamy 1 July 2010 в 19:18
поделиться

3 ответа

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

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."
48
ответ дан 24 November 2019 в 19:03
поделиться

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

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

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

12
ответ дан 24 November 2019 в 19:03
поделиться

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

Когда вы вызываете git status, он показывает вам, что было добавлено в область постановки (т.е. "Changes to be committed"), что было изменено среди файлов, которые отслеживает git (т.е. "Changed but not updated"), и любые новые файлы, которые вы никогда не добавляли раньше (т.е. "Untracked files").

Если вы хотите просто зафиксировать то, что вы изменили, но не включать вновь созданные файлы, вы можете использовать git commit -a -m "Comment for modified files already under source control."

20
ответ дан 24 November 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: