Исходная функция 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.