У меня нет опыта работы с Git, но я изо всех сил стараюсь привыкнуть к нему, и пока что я использую его только для проектов, над которыми я работаю один.
Когда я пишу код, есть какой-то нисходящий подход естественным образом (поскольку я не знаю будущего), и возникает повторяющаяся тема:
Я делаю некоторую работу.
Я узнаю, что для того, чтобы моя работа стала чем-то «обязательным», мне нужно заниматься другой работой.
Другая работа заслуживает отдельного коммита.
Под чем-то обязательным я подразумеваю то, что компилируется, или что-то, что не является полным беспорядком.
И что-то, что заслуживает отдельного коммита, я имею в виду, что я узнал, что коммиты должны делать только одно.
То, как я это решаю, громоздко. Если другая работа находится в другом файле, я создаю новую ветку, фиксирую там и объединяю. Если работа находится в том же файле ... тьфу ... Я делаю локальную копию и возвращаю файл в его состояние в HEAD, делаю необходимый коммит и затем начинаю восстанавливать мою работу из копии. Как мне на самом деле справиться с этим? Я не думаю, что это так, не так ли? Я так не думаю, потому что это должно приходить довольно часто всем (кто, по крайней мере, не знает будущего). Или, может быть, кажется, что мой рабочий процесс может быть ошибочным?
git add -p
а затем зафиксировать только эти части. Это очень мощная техника, и я использую ее почти все время.
git status
чтобы увидеть все измененные файлы, и сделать два или более коммитов, используяgit add
с конкретными файлами (вместоgit add --all
), и коммит по частям.