работа - git синхронизация веток




Перемещение существующей, незавершенной работы в новую ветку в Git (4)

В качестве альтернативы:

  1. Сохраните текущие изменения в таймере:

    $ git stash

  2. Создайте новую ветку на основе этого тайника и переключитесь на новую ветку:

    $ git stash branch <new-branch> [email protected]{0}

Совет. Используйте клавишу табуляции, чтобы уменьшить ввод имени кошелька.

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

Как переместить существующие незафиксированные изменения в новую ветку и сбросить текущую?

Я хочу сбросить текущую ветку, сохранив существующую работу над новой функцией.


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

git cherry-pick <commitID>

Существует много вы можете сделать с помощью вишневого кирка, как описано here , но это может быть прецедентом для вас.


Общий сценарий следующий: я забыл создать новый филиал для новой функции и выполнял всю работу в старой ветви функции. Я выполнил всю «старую» работу в мастер-ветке, и хочу, чтобы моя новая ветвь развивалась от «мастера». Я не сделал ни одной фиксации своей новой работы. Вот структура филиала: «master» -> «Old_feature»

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply

Если вы делали коммиты на своей основной ветке во время кодировки, но теперь вы хотите переместить эти коммиты в другую ветку:

  1. Скопируйте текущую историю на новую ветку, внеся также любые незафиксированные изменения:

    git checkout -b <new-feature-branch>
    
  2. Теперь заставьте исходную «грязную» ветвь откатить: (без переключения на нее)

    git branch -f <previous-branch> <earlier-commit-id>
    

    Например:

    git branch -f master origin/master
    

    или если вы сделали 4 фиксации:

    git branch -f master HEAD~4
    

Предупреждение. Похоже, что git branch -f master origin/master сбросит информацию отслеживания для этой ветви. Поэтому, если вы сконфигурировали master ветвь, чтобы нажать ее куда-то, кроме origin/master эта конфигурация будет потеряна.

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





git-reset