Git: Stage into Commit, каков правильный рабочий процесс?

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

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

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

Что такое право способ сделать это?
Что такое быстрый способ сделать это?

обновление:
Как это сделать с magit?

2 ответов


вы могли бы сделать это с:

$ git branch task1 # first set of commit to do

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

тогда попробуйте интерактивная сессия для добавления просто то, что вы хотите:

$ git add -i

добавить в любое время вы хотите проверить, что вы добавили:

$ git stash --keep-index

если он компилирует, git commit ваша текущая работа, и если task1 еще не завершено, git stash pop в восстановить полное рабочее дерево и повторите.

один раз task1 полностью пропечется, вы можете обрезать все эти 'task1' commits, и объединить все работы в master:

$ git checkout master
$ git merge task1
$ git branch -D task1 # no need for that intermediate branch

если вы хотите сохранить историю некоторых значительных task1 commits, вы можете сначала перебазировать task1 поверх master, перед слиянием master на task1 (перемотка вперед)

наконец, если ваш тайник все еще содержит некоторые незавершенные работы, повторите весь процесс для task2.


вот способ magit, который я использую:

  • сделайте свой индекс для первого коммита с помощью magit "u" или " s " для этапа или unstage hunk/files/region. (Это можно сделать и с Git gui). Как только ваш индекс будет готов к фиксации:
  • фиксация с помощью "c", напишите сообщение фиксации, Ctrl-C Ctrl-C для фиксации.
  • stash с "z", а затем >, это будет хранить все ваши изменения. Чтобы вернуть изменения, вы можете использовать "A", пока ваш указатель находится на правильном тайнике вхождение.

сделайте свои тесты, чтобы проверить, хорошо ли ваша фиксация. Если какие-либо изменения должны быть сделаны, Повторите, как и раньше, но нажмите Ctrl-C Ctrl-A перед фиксацией на экране сообщения фиксации. Это изменит (завершит) ваш последний коммит вместо создания нового.

обратите внимание, что если вы позже поймете, что какой-то код должен изменить фиксацию, которая предшествует последней, которую вы сделали, вы должны зафиксировать код самостоятельно (с временной сводкой) и сложить их в правая фиксация благодаря" L "для доступа к экрану журнала, затем наведите указатель перед фиксацией, которую вы хотели бы хлюпнуть, и нажмите" E", чтобы запустить сеанс" git rebase-i". Переупорядочите фиксации так, чтобы временная сводка "исправляла" целевую фиксацию. Выйдите из буфера и ТАДА. Все сделано.