Перейти к содержимому

Как запулить изменения из другой ветки

  • автор:

Как подтянуть изменения из другой ветки?

К примеру, у меня есть ветка feature-1, и я сделал feature-2, унаследовав от первой ветки (feature1 -> feature2). После этого начал работать на второй ветке, однако, спустя время, потребовалось внести изменения в первой ветке. Как мне применить изменения, которые я сделал в первой ветке для второй?

Отслеживать
26.2k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
задан 30 окт 2020 в 11:39
5 1 1 серебряный знак 3 3 бронзовых знака
если комитов в первой ветке много, то смотрите в сторону rebase, если один, то cherry pick.
30 окт 2020 в 11:45
Может быть git checkout feature2 , git merge feature1 ?
30 окт 2020 в 13:32

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

если коммиты, добавленные во вторую ветку, ещё никуда не отправлялись, то самое подходящее средство — это rebase :

$ git checkout feature-2 $ git rebase feature-1 

при этом коммиты, которые добавлены в ветку feature-2 , будут пересозданы «поверх» того коммита, на который указывает указатель feature-1 («ветка» в git — это ведь просто плавающий указатель на коммит).

$ man git-rebase 

Отслеживать
ответ дан 1 ноя 2020 в 12:20
aleksandr barakin aleksandr barakin
68k 218 218 золотых знаков 79 79 серебряных знаков 221 221 бронзовый знак

  • git
  • git-branch
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Получение изменений из удаленного репозитория

Для доступа к удаленным репозиториям можно использовать распространенные команды Git.

Options for getting changes

These commands are very useful when interacting with a remote repository. clone and fetch download remote code from a repository’s remote URL to your local computer, merge is used to merge different people’s work together with yours, and pull is a combination of fetch and merge .

Cloning a repository

To grab a complete copy of another user’s repository, use git clone like this:

$ git clone https://github.com/USERNAME/REPOSITORY.git # Clones a repository to your computer 

You can choose from several different URLs when cloning a repository. While logged in to GitHub, these URLs are available on the main page of the repository when you click

Screenshot of the main page of a repository. A green button, labeled

When you run git clone , the following actions occur:

  • A new folder called repo is made
  • It is initialized as a Git repository
  • A remote named origin is created, pointing to the URL you cloned from
  • All of the repository’s files and commits are downloaded there
  • The default branch is checked out

For every branch foo in the remote repository, a corresponding remote-tracking branch refs/remotes/origin/foo is created in your local repository. You can usually abbreviate such remote-tracking branch names to origin/foo .

Fetching changes from a remote repository

Use git fetch to retrieve new work done by other people. Fetching from a repository grabs all the new remote-tracking branches and tags without merging those changes into your own branches.

If you already have a local repository with a remote URL set up for the desired project, you can grab all the new information by using git fetch *remotename* in the terminal:

$ git fetch REMOTE-NAME # Fetches updates made to a remote repository 

Otherwise, you can always add a new remote and then fetch. For more information, see «Managing remote repositories.»

Merging changes into your local branch

Merging combines your local changes with changes made by others.

Typically, you’d merge a remote-tracking branch (i.e., a branch fetched from a remote repository) with your local branch:

$ git merge REMOTE-NAME/BRANCH-NAME # Merges updates made online with your local work 

Pulling changes from a remote repository

git pull is a convenient shortcut for completing both git fetch and git merge in the same command:

$ git pull REMOTE-NAME BRANCH-NAME # Grabs online updates and merges them with your local work 

Because pull performs a merge on the retrieved changes, you should ensure that your local work is committed before running the pull command. If you run into a merge conflict you cannot resolve, or if you decide to quit the merge, you can use git merge —abort to take the branch back to where it was in before you pulled.

Further reading

  • «Working with Remotes» from the Pro Git book»
  • «Troubleshooting connectivity problems»

Как обновить свою ветку последними изменениями с основной ветки

Узнай 2 способа, как можно обновить свою ветку последними изменениями с основной ветки разработки.

Git · 09.07.2019 · читать 1 мин �� · Автор: Alexey Myzgin

Обычно, когда разрабатывается какой-то функционал, создается отдельная ветка, которая ответвляется от основной линии разработки — master или develop (мы будем использовать master ). Однако, чем дольше мы работаем над своей веткой, тем больше будет окончательное слияние (merge).

Когда мы работаем в команде, то очень часто коллеги добавляют изменения в репозиторий. Для того, чтобы стянуть последние изменения, нужно перейти на основную ветку master и сделать git pull .

Хорошей практикой является создание отдельной ветки для разработки наших новых функциональностей или даже обратных исправлений. Тем не менее, настоятельно рекомендуется синхронизировать её с основной линией разработки, которая может быть master или с какой-либо отдельной веткой, как можно чаще.

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

Для обновления своего кода, прежде всего, нужно стянуть все изменения. Нам нужно убедиться, что мы синхронизированы и обновлены. Будучи на основной ветке master , делаем:

git pull # Already up to date.

Затем переходим на нашу ветку разработки. Теперь для синхронизации с веткой master у нас есть разные возможности.

# в нашем случае имя_основной_ветки - master # git merge имя_основной_ветки git merge master

Настоятельно рекомендуется так делать, если это общая ветка. Если мы пушнем данные изменения в удаленный репозиторий origin/master , то другие разработчики тоже смогут работать над этим же кодом.

Однако, если эта ветка только наша и над ней работаем только мы, тогда можно использовать команду git rebase : возьмёт каждый коммит из master и объединит их поверх коммитов в нашей ветке.

В результате наша ветка будет просто смещена вверх, как если бы мы только что создали её из последней версии master ветки. Однако, это действие меняет id этих же коммитов. Опять же, желательно делать git rebase только в том случае, если у нас личная ветка и она не делится с другими.

Давай выполним rebase. Будучи на ветке разработки делаем git rebase с master .

git rebase master

Что он делает? — перематывает HEAD и заменяет нашу работу поверх master :

First, rewinding head to replay your work on top of it... Applying:

Теперь наши коммиты содержат все последние изменения, произошедшие в master .

Как перенести изменения одной ветки на другую?

Добрый день, подскажите, пожалуйста как перенести изменения одной ветки на другую?
Если не сложно — опишите, как в консоли писать надо, а то только-только учусь работе с гитом.

  • Вопрос задан более трёх лет назад
  • 21934 просмотра

Комментировать
Решения вопроса 1

max_front

берешь хэш коммита (его можно узнать используя команду git log), который тебе надо перенести в другую ветку, затем переключаешься на нужную ветку и вводишь git cherry-pick <хэш коммита>, например git cherry-pick 3ea6207fe84 и будет тебе добро

Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
Ответы на вопрос 1

tsarevfs

C++ developer

Решение Maks Kovyvchak правильное, но только на случай если вам нужно достать или перенести один или несколько коммитов, но не все.
Более типичная ситуация, когда работу сделанную в отдельной ветке надо целиком влить в другую. В gitflow через это проходят все коммиты.
https://bitworks.software/2019-03-12-gitflow-workf.

Для этого применяется команда git merge

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *