git工作流分支更新

时间:2013-01-07 22:03:52

标签: git git-merge

这是情况。 github上有3个分支:master,his-tests,my-tests 我们暂时忘掉主分支。在对master进行初步工作之后,我工作的人创建了一个分支'his-tests',在那里他继续开发代码。然后我根据他的创建我的分支:

git checkout -b my-tests

我在my-tests中添加了一些更改,提交并将其推送到github。我的合作者看到了这些变化并在他的分支中实现了这些变化(他的测试)。几天后,他添加了更多更改,我想在我的分支(my-tests)中实现它们。我该怎么做?我知道我可以删除我的分支并再次克隆他的分支,但我不能继续这样做。处理它的正确方法是什么?因此,当我访问github时,我可以看到他的分支中有变化(通常是1或2个文件):

git branch -a
master
* my-branch
his-branch
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/my-branch
remotes/origin/his-branch

那么我该如何将他的分支与my-branch合并。他拥有最新的文件状态,我希望更新my-branch中的所有文件。你可以看到我已经结帐并且总是在我的分支机构工作,我不会在他的分支机构中进行更改。这个更新my-branch的循环的工作流程是什么,然后继续进行更改并添加一些更改并将我的更改推送到github上的my-branch。

您还需要更多信息吗?谢谢

2 个答案:

答案 0 :(得分:1)

  

那么我该怎么做才能将他的分支与我的分支合并

你将他的分支与我的分支合并!

首先,确保您的本地仓库与您在GitHub上看到的匹配:

$ git checkout his-branch
$ git pull

在您的本地仓库更新后,您可以将his-branch中的新内容合并到my-branch中:

$ git checkout my-branch
$ git merge his-branch

使用git merge将允许git处理两个分支之间的任何可能的冲突。如果您有冲突但又不关心它们,并且您只想让您的分支与他的分支相同,放弃分支中的其他所有内容,则可以使用git reset移动分支:

$ git checkout my-branch
$ git reset --hard his-branch

答案 1 :(得分:1)

你必须将他的分支合并到你的分支中:

git checkout my-test
git merge his-test

你也可以rebase改变他的分支。这将保持历史不变,但你修改历史(有些人认为是坏的)

git checkout my-test
git rebase his-test

如果你的同事在另一个遥控器上。首先添加遥控器:

git remote add my-colleague-remote git@hisremote.com

然后,您引用此遥控器上的分支保持:

git fetch my-colleague-remote
git merge my-colleague-remote/his-branch