Как зафиксировать один файл за раз, используя Git? - PullRequest
22 голосов
/ 05 января 2010

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

Ex:

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

Ответы [ 5 ]

45 голосов
/ 06 января 2010

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

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

20 голосов
/ 05 января 2010

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

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

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

git add file01.txt
git commit

git add file02.txt
git commit

...
14 голосов
/ 04 августа 2011

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

git add -e

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

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

2 голосов
/ 05 января 2010
git add file01.txt
git stash
git commit -m'commit message'
git stash pop

повторить.

1 голос
/ 15 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...