Исходная функция SourceTree с ребазой - эквивалент CLI

В течение некоторого времени я использовал SourceTree для выполнения всех операций GitFlow, включая закрытие feature ветви.

Теперь я хотел бы лучше понять, как выполнять некоторые операции с помощью git CLI.

В частности, я не понял, что было бы CLI-эквивалентом закрытия функции, также выбрав опцию rebase, как на рисунке ниже.

Я попытался объединить, но это не воспроизводит весь процесс, какой будет команда CLI для выполнения той же операции, что и SourceTree?

1 ответ

Решение

Оригинальные предложения командной строки, на которых основано большинство инструментов GitFlow, можно найти в оригинальной статье блога здесь:

https://nvie.com/posts/a-successful-git-branching-model/

Закрытие ветви функции состоит из следующих шагов:

$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop

Опция флажка в SourceTree, вероятно, делает еще один дополнительный шаг, который заключается в том, чтобы переместить текущую функциональную ветвь в верхнюю часть ветви разработки перед объединением. Если вы не знакомы с git rebase операции, я бы посоветовал вам сначала прочитать об этом здесь:

https://git-scm.com/docs/git-rebase

ПРИМЕЧАНИЕ. Несмотря на то, что операция перебазирования является совершенно нормальным рабочим процессом, которым я должен следовать, я использую его почти ежедневно, но он может вызвать проблемы, если вы впервые используете его, особенно если возникают конфликты между веткой функций, над которой вы работаете, и тем, что находится на развивающейся ветке. Я призываю вас попробовать следующее изолированно, чтобы привыкнуть к происходящему.

Итак, глядя на "нормальное" завершение рабочего процесса компонента сверху, вы бы сделали что-то вроде следующего:

$ git checkout myfeature
Switched to branch 'myfeature'
$ git rebase develop
Replay commits from myfeature branch onto the head of the current develop branch
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop

Если вы посмотрите историю своего git-репозитория до и после операции rebase, то, надеюсь, вы должны понять, что происходит. Если вы все еще не уверены, вы можете использовать что-то вроде следующего:

http://git-school.github.io/visualizing-git

Что поможет вам визуализировать происходящие операции с Git.

Другие вопросы по тегам