在IntelliJ IDE中使用Git合并分支

20

我知道有很多类似的问题,但我遇到了麻烦。首先,我使用的是 Webstorm (IntelliJ) 而不是命令行。其次,这个问题似乎因人而异。

我有我的 master 分支,很明显。我创建了一个名为“InlineEditing”的新分支。我已经在这个分支上工作了几天。master 分支没有任何更改。我现在想将所有当前分支中的更改移回到 master 并从那里继续工作。

在 Webstorm 中,将 InlineEditing 设为当前分支后,我尝试使用以下方法合并,但似乎没有任何变化。也就是说,当我检出 master 分支时,它还是旧代码。

输入图像描述

所以我的问题是,将当前分支“合并”回 master 的正确方法是什么?


1
提交您的更改到 InlineEditing 分支,切换到 master,然后将 InlineEditing 合并到 master。我也使用 IntelliJ,但是我从 Git 命令行进行繁重的操作,只使用 IntelliJ 解决合并冲突等事项。 - Tim Biegeleisen
好像这个方法可行(尽管对我来说似乎有些反常)。唯一的问题是现在它说我的CSS文件不同,但当我点击diff时,它说它们是相同的... ¯\(ツ) - user736893
你选择的是本地分支master而不是远程origin/master。顺便问一下,你有fetch吗? - Manuel Schmidt
你能发表为答案吗?我错过的部分是你必须从主分支合并。我希望有像“Merge From”这样的术语。当我听到“merge”时,我的默认本能是“Merge Into”。 - user736893
如果你是唯一的一个人,那么是否拉取并不重要。顺便说一下,你拉取的是远程仓库而不是分支。我不太了解IntelliJ - Git集成的细节,但在Git中,你总是合并到当前分支。 - Manuel Schmidt
显示剩余2条评论
3个回答

33

通常你有两种合并用例。

  1. 第一种用例就像你已经描述的那样:主分支没有任何更改。在这种情况下,合并非常容易,请参见下面图片中的步骤。

scenario_1

  1. 第二种用例有点复杂:主分支有一些更改。您想首先更新主分支和InlineEdit,然后将InlineEdit合并到主分支。请参见下面图片中的步骤。

scenario_2


20

您正在遵循的标准工作流程大致如下:

git checkout InlineEditing
# work work work
git commit -m 'finished my work'

# now switch to master and merge the feature branch into it
git checkout master
git merge InlineEditing
# resolve any merge conflicts; IntelliJ is great for this step

在Git中,你需要切换到master分支才能将其他分支合并到它中。这可能有点违反直觉,你可能期望能够从前一个分支将InlineEditing合并到master。但这就是Git的工作方式。

至于你原来对IntelliJ的问题,我认为使用GUI工具处理Git没有问题,前提是你知道自己在做什么。我倾向于在命令行上执行大部分Git操作,因为我具有经验并且命令行功能强大。但是在许多情况下,我会使用像IntelliJ这样的工具。例如,解决合并冲突在IntelliJ中比在命令行中容易得多。此外,使用GUI工具可以更容易地可视化分支的历史。


0

Intellij并没有一键将当前分支合并到主分支的功能,因此创建脚本来执行这个操作会更容易:

#!/usr/bin/env sh
# merge current branch to master no-ff
branch=$(git symbolic-ref --short HEAD)
git checkout master
git pull origin master
git merge "${branch}" --no-ff -m "finish the ${branch} and merge into master"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接