Дилемма рабочего процесса в Git Branch - PullRequest
2 голосов
/ 25 октября 2010

От мастера я создал ветку А, потому что хотел добавить новую функцию. После завершения функции я передал все до этого момента. Но потом я продолжал работать над веткой и теперь понимаю, что все, что я сделал, так как этот коммит имел бы более логичный смысл в новой ветке, назовем ее B, вне master.

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

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Начиная с того, что у вас есть в ветке А:

 git stash           # save your changes away
 git checkout master # check out the master branch
 git merge A         # merge your changes from branch A
 git pull --rebase   # This is to get rid of the 'Merged branch A' log entry
 git checkout -b B   # create and checkout branch B from current master
 git stash pop       # get back the changes you saved

и вы будете в своей только что созданной ветви B со своими незафиксированными изменениями.

2 голосов
/ 25 октября 2010

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

Посмотрите на опции, связанные с <start-point> в документах для git branch.

Что касается слияния A с master в точке, где вы фактически начали работать с B, команда git merge принимает любой коммит в качестве аргумента (опять же, не толькоГОЛОВА филиал).Вернитесь в журналы этой ветви, найдите идентификатор фиксации точки, в которой завершена работа над A, и вы начали работать над функцией B, мастер проверки, а затем объедините с этим идентификатором.

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