2015-01-07 1 views
3

i.e git commit -am?Неправильно ли записывать все файлы всегда на git?

Я не знаю о каких-либо повторениях, которые могли бы произойти позже при слиянии, например.

+1

Если у вас есть конфиг '.gitignore' правильно, то я думаю, что все в порядке и всегда должно использоваться таким образом. Если вам нужно зафиксировать только часть изменений, то, вероятно, пришло время создать больше ветвей для разделения изменений на ветви. –

ответ

3

git commit -a не фиксирует все файлы. Вместо этого он только фиксирует все файлы, которые уже находятся под управлением версиями, и имеют неустановленные изменения (в дополнение к уже поставленным файлам).

-a, --all 
     Tell the command to automatically stage files that have been 
     modified and deleted, but new files you have not told Git about are 
     not affected. 

Это отличается от git add -A, который добавляет все файлы и на которые ссылаются другие ответы. Это добавит все необнаруженные и не игнорируемые (см. gitignore).

Использование git commit -a не является вредным per-se. Есть две проблемы, которые могут возникнуть:

  1. Ваш фиксаций может стать большим, что мешает при поиске причины регрессии (см git bisect). Чтобы этого избежать, вы должны посмотреть на git commit -p.

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

Что касается объединений, git выполняет слияния на основе индивидуальных изменений в файле. Таким образом, не имеет значения, сколько файлов находится в одном коммите. Но создание небольших коммитов обычно приводит к меньшему количеству изменений для каждого файла, что упрощает слияние.

1

Вы не хотите, чтобы объектные файлы, исполняемые файлы (результат сборки i.e скомпилированные двоичные файлы) и файлы резервных копий (например, foo.html~) составляли git.

Поэтому у вас должен быть файл .gitignore, и вы должны установить его как можно раньше.

Смотрите также this

После того, как у вас есть достаточно хороший .gitignore используя git commit -a -m .... разумно. Я часто это делаю.

+2

'git commit -a' не добавляет новые файлы для отслеживания git. Следовательно, никакие нежелательные файлы, такие как скомпилированные двоичные файлы, не будут втянуты. –

0

Это зависит от того, что у вас есть в вашем рабочем каталоге.

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

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