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

Как фиксировать один файл за раз с помощью Git?

Скажем, есть несколько измененных файлов, и я просто хочу, чтобы каждый файл был зафиксирован каждый раз. Как это сделать? Приведенный пример со статусом выглядит ниже. Спасибо!!

Пример:

> git status
#   modified: file01.txt
#   modified: file02.txt
#   modified: file03.txt
#   modified: file04.txt
#   modified: file05.txt
4b9b3361

Ответ 1

Есть несколько способов, но, возможно, самый простой:

git commit file01.txt
git commit file02.txt
...

Любые пути, которые вы перечисляете после выполнения команды commit, будут выполняться независимо от того, будут ли они установлены. В качестве альтернативы вы можете создать каждый из них, а затем зафиксировать:

git add file01.txt
git commit

git add file02.txt
git commit

...

Ответ 2

Используйте git add -p, а затем git commit. git add -p запрашивает у вас каждое изменение, нужно ли его выполнять для фиксации, что очень удобно.

Вы также можете использовать -p с git reset и git checkout.

Ответ 3

git add -p, описываемый ответом daf, хорош, но для более прямого подхода к выбору и выбору мне очень нравится:

git add -e

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

Если вы случайно закроете редактор без внесения изменений, вы, вероятно, захотите использовать get reset HEAD, а затем начнете.

Ответ 4

git add file01.txt
git stash
git commit -m'commit message'
git stash pop

повторить.

Ответ 5

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

Я использую Magit для Emacs, который использует одиночные нажатия клавиш для перехода вперед или назад через куски, увеличения или уменьшения детализации и постановка или снятие текущей метки. Вы можете также отметить область вручную и этап (или не-этап) именно этой области.

Я считаю, что есть похожие плагины для vim и других редакторов/IDE.