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

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

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

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

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

Каков правильный способ сделать это?
Каков самый быстрый способ сделать это?

Update:
Как это сделать с магитом?

4b9b3361

Ответ 1

Вы можете сделать это с помощью

$ git branch task1 # first set of commit to do

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

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

$ git add -i

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

$ git stash --keep-index

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

После того, как task1 будет полностью запекаться, вы можете обрезать все те 'task1' и затем объединить всю работу с мастером:

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

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

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

Ответ 2

Здесь используется магический способ:

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

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

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