Подтвердить что ты не робот

Как синхронизировать две ветки в одном хранилище Git?

Здесь часто встречается проблема с рабочим процессом:

master - наша "стабильная" ветвь

$ git status
# On branch master
nothing to commit (working directory clean)

создать модуль на ветке

$ git checkout -b foo
$ echo "hello" > world
$ git add .
$ git commit -m "init commit for foo module"
$ git checkout master
$ git merge foo

выполнять работу над ведущими или другими ветвями

В течение следующих нескольких недель больше кода будет передаваться непосредственно ведущему и другим ветким. ветвь foo останется нетронутой в течение этого периода времени

возобновить работу/сделать обновления на ветке foo

$ git checkout foo

О нет! foo является массово устаревшим! Я понимаю, почему, но я do нуждаюсь foo в синхронизации.

вопрос

Как получить последнее содержимое из ветки master?

4b9b3361

Ответ 1

Если вам не нужна ветка вокруг:

Если вы объединили foo обратно в master, "git branch -d foo", чтобы убить ветвь темы, а затем "checkout -b foo" в будущем, когда вам нужно снова взломать ее.

Если вам нужна ветка вокруг:

Вы можете пересобирать ветвь своего тега против ведущей ветки:

git checkout foo
git rebase master

Или:

git rebase master foo

Ответ 2

В приведенном ниже примере сочетается git rebase с git merge для поддержания линейной истории проекта. Это быстрый и простой способ убедиться, что ваши слияния будут быстро перенаправлены.

# Start a new feature
git checkout -b new-feature master
# Edit files
git commit -a -m "Start developing a feature"

В середине нашей функции мы понимаем, что это дыра в нашем проекте

# Create a hotfix branch based off of master
git checkout -b hotfix master
# Edit files
git commit -a -m "Fix security hole"
# Merge back into master
git checkout master
git merge hotfix
git branch -d hotfix

После объединения исправления в master, у нас есть разветвленная история проекта. Вместо простого слияния git, хорошо интегрируйте ветвь функции с rebase для поддержания линейной истории:

git checkout new-feature
git rebase master

Это перемещает новую функцию в кончик мастера, что позволяет нам выполнять стандартное ускоренное слияние с мастером:

git checkout master
git merge new-feature

Взято из Atlassian git Rebase Tutorial