如何通过“hunk”合并Git中的分支

时间:2012-04-05 23:19:06

标签: git github

这是场景。我在“master”分支上创建了一个“dev”分支,并做了一些新的提交。其中一些更改仅与我的本地开发计算机相关。例如,我将URL变量更改为指向本地apache服务器,而不是在线发布的真实URL(我在测试阶段为此提高了速度)。现在我想将我的更改从dev分支合并到master分支中,但不是那些只在我的本地环境中有意义的更改。

我设想了类似merge -patch的东西,它允许我选择我想要逐行合并的更改。

或者也许我可以签出“master”分支,但是将文件保存在我的工作目录中,因为它们位于“dev”分支中,然后执行git add --patch。那会有用吗?

2 个答案:

答案 0 :(得分:6)

一种方法是合并来自其他分支的更改,但在提交合并之前删除特定于开发的内容。

首先,获取更改,而不是使用git merge --no-ff --no-commit dev提交更改。

通过编辑受影响的文件并git add编辑受影响的文件,或git reset HEAD受影响的文件,然后git add --patch您想要的部分,删除特定于开发的更改。

然后提交合并。进行合并提交的一个优点是未来的合并将是无痛的。因为特定于开发的提交被认为是合并的,所以未来的合并不涉及特定于开发的部分可以使用简单的git merge dev来完成。通过这种方式,您可以无限期地维护具有自己配置的单独分支,同时仍可轻松地将更改合并到主分支中。

答案 1 :(得分:2)

也许你可以试试这样的东西?

git merge --squash --no-commit $YOUR_OTHER_BRANCH
git reset HEAD
git add -p
git commit