Как вытащить ветку, которая создается из другой ветки в GIT - PullRequest
2 голосов
/ 18 июня 2019

У меня есть кодовая база в ветке developmentV2.Начиная с developmentV2 я создал ветку rahulV2, как показано ниже.

git checkout -b rahulV2 developmentV2
git push origin/rahulV2

Я внес некоторые изменения в ветку rahulV2. Перед тем как переместить ее в ветку rahulV2, я хочу обновить код сdevelopmentV2 если кто-то выдвинул какой-то код на developmentV2.

Поэтому я прячу свои изменения в rahulV2.

git stash

, если я буду использовать

git pull

он будет извлечен из origin/rahulV2.

Я хочу получить developementV2 код, чтобы rahulV2 был обновлен, и после нажатия на код я могу объединить свои rahulV2 изменения в developmentV2

Пожалуйста, помогите мне с этим.

Ответы [ 5 ]

2 голосов
/ 18 июня 2019

Существует два принятых способа обновления вашей ветки вашей родительской ветвью (или любой другой веткой на самом деле).Это: Слияние и Rebase .

Rebase : Rebase означает, что вы изменили историю ваших коммитов.В Git каждый коммит имеет родительский коммит.Что делает rebase - это заменяет родительский коммит первого коммита вашей ветви (когда ваша ветка стартовала) на последний коммит той ветки, на которую вы перебазировали.Это меняет историю ваших коммитов, но делает их более аккуратными.Способ сделать это:

git checkout developementV2
git pull                         # to make sure you rebase onto the updated version
git checkout rahulV2
git rebase developementV2

Слияние : С помощью этого метода вы не изменяете историю ваших коммитов.Все, что это делает, это создает новый коммит с изменениями как в вашей ветви, так и в вашей базовой ветви (в данном случае developmentV2 и rahul2).Слияние менее опасно, чем перебазирование, поскольку оно может генерировать конфликты только один раз, тогда как слияние может дать вам конфликты для каждого коммита между вашим старым и вашим новым коммитом происхождения.Способ слияния:

git checkout developementV2
git pull                         
git checkout rahulV2
git merge developementV2

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

0 голосов
/ 18 июня 2019

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

Надеюсь, это было полезно

0 голосов
/ 18 июня 2019

Я пытался

git checkout developmentV2

git pull

Здесь были получены новые 15 коммитов.

Тогда я попробовал

git checkout rahulV2

Здесь показано, что ваша ветвь опережает 'origin / rahulV2' на 15 коммитов.

0 голосов
/ 18 июня 2019

origin/rahulV2 - это ветка удаленного отслеживания, которая обновляется с изменениями из удаленного репозитория каждый раз, когда вы выполняете git fetch. С другой стороны, rahulV2 - ваша локальная версия этой ветки. rahulV2 может быть не синхронизировано с origin/rahulV2, что, в свою очередь, может быть не синхронизировано с тем, что на самом деле находится в удаленном хранилище.

Следовательно, разница в выполнении слияния будет зависеть от различий в различных воплощениях rahulV2. Если вы хотите объединить самые последние rahulV2 с вашими developmentV2, вам следует сделать следующее:

git checkout rahulV2        # update remote tracking rahulV2
# git pull origin rahulV2     
git checkout developmentV2 # switch to developmentV2
git merge rahulV2          # merge
0 голосов
/ 18 июня 2019

Это довольно типичный рабочий процесс.

git checkout developementV2
git pull
git checkout rahulV2
git merge developementV2

Но на случай, если это повторяющаяся задача, возможно, рассмотрим псевдоним?

git config --global alias.upd '!f() { git fetch && git checkout developementV2 && git merge --ff-only origin/developementV2 && git checkout -; }; f'

тогда каждый раз, когда вам нужно обновить ветку rahulV2 до состояния developementV2, делайте

# update your developementV2 branch from remote
git upd

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