如何在同一个Git仓库中同步两个分支?

问题描述 投票:29回答:3

这是我经常遇到的常见工作流程障碍:

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已经过时了!我理解为什么,但是我需要foo保持同步。

问题

如何从master分支中获取最新内容?

git workflow git-rebase git-branch
3个回答
34
投票

如果不需要分支:

[如果您将foo合并回master,则使用“ git branch -d foo”杀死主题分支,然后在以后需要再次对其进行黑客攻击时将“ checkout -b foo”合并。

如果您确实需要分支:

您可以将主题分支基于master分支作为基础:

git checkout foo
git rebase master

或:

git rebase master foo

6
投票

Rebasing是将一系列提交或移动到新的基本提交中的过程。在功能分支工作流的上下文中,重新定基最有用,并且很容易可视化。一般过程可以如下所示:

Git Rebase visual explanation

下面的示例结合了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

将修补程序合并到主版本后,我们有了一个分叉的项目历史记录。我们将功能分支与rebase集成在一起,以保持线性历史记录,而不是简单的git合并:

git checkout new-feature
git rebase master

这将新功能转移到母版的顶端,这使我们可以从母版进行标准的快进合并:

git checkout master
git merge new-feature

取自Atlassian Git Rebase Tutorial


1
投票

我使用以下内容合并两个分支(我的和你的)的更改,并使两个分支同步以继续工作。这似乎正在工作。有人看到它有问题吗?

git checkout mine # make sure I'm on my branch
git commit -a     # commit changes
git push origin mine  
git checkout yours # switch to your branch
git pull origin yours # get changes you've committed & pushed
git checkout mine 
git merge yours # merge your changes into mine
git push origin mine 
git checkout yours 
git rebase mine # set your branch to the merged result
git push origin yours # push the merged result up to your branch on origin
git checkout mine # get back to my branch
© www.soinside.com 2019 - 2024. All rights reserved.