Как фиксировать один файл за раз с помощью Git?
Скажем, есть несколько измененных файлов, и я просто хочу, чтобы каждый файл был зафиксирован каждый раз. Как это сделать? Приведенный пример со статусом выглядит ниже. Спасибо!!
Пример:
> git status
# modified: file01.txt
# modified: file02.txt
# modified: file03.txt
# modified: file04.txt
# modified: file05.txt
Ответы
Ответ 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.