Как обновить локальную рабочую ветку из локальной главной ветки? - PullRequest
0 голосов
/ 30 апреля 2018

Итак, у меня есть ветка master и work. Я сделал несколько изменений в файлах в основной ветке, чтобы сделать это внутри рабочей ветви. И теперь я должен перенести эти изменения из моей локальной ветки master в локальную ветку work? Вопрос в том, как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Просто запустите git merge , используя --ours или --theirs, чтобы исправить конфликты, если таковые имеются, где Наши ветвь, в которой вы находитесь, и Theirs - это другая ветвь, которая используется в вашем действии.

Например, если вы хотите, чтобы все изменения были объединены в work-branch, а конфликтующие файлы должны быть взяты из work-branch, тогда команды должны быть:

$ git checkout work-branch
$ git merge --strategy=ours local-master

В противном случае, если вы хотите, чтобы все изменения были объединены в work-branch и конфликтующие файлы должны быть взяты из local-master, тогда команды должны быть:

$ git checkout work-branch
$ git merge --strategy=theirs local-master
0 голосов
/ 30 апреля 2018

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

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

Один из способов сделать это -

  • ответвление текущего состояния мастера в новую ветвь
  • снова проверьте master и сбросьте его (hard) до последнего коммита до изменений, которые должны были произойти в рабочей ветви (найдите это через git log)
  • проверить рабочую ветку и объединить новую ветку, содержащую изменения
  • и, наконец, проверьте мастер и объедините рабочую ветку, которая теперь содержит изменения, которые изначально и ошибочно были внесены в мастер.

Сброс мастера - хорошая идея, только если вы еще не отправили мастер в другой репозиторий.

0 голосов
/ 30 апреля 2018

То, что вы хотите, это перебазирование ветки. Он попытается выровнять историю Branch-A с Branch-B.

git checkout work-branch
git rebase master

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

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