将 master 拉到 Intellij 的另一个分支上

Posted

技术标签:

【中文标题】将 master 拉到 Intellij 的另一个分支上【英文标题】:Pull master being on another branch in Intellij 【发布时间】:2019-03-16 13:23:41 【问题描述】:

当我在我的分支上时,我想从master 生成pull 以获取最新版本的代码,然后我将我的分支重新设置为master,然后我将我的分支推送到服务器并创建拉取请求。

今天我用下一个方法来做这一切:

我在my_branch,我切换到master分支 切换后,打开master,我要么执行git pull,要么在Intellij中使用图形界面VCS->git->pull 我回到my_branch 并执行变基 变基后我创建了一个git push -f

如何避免从 my_branch 切换到 master 并返回 Intellij?有没有办法将master 拉到master 在另一个分支上?

【问题讨论】:

你的本地master总是和远程master一样?如果是这种情况,您可以设置您的功能分支来跟踪远程 master 而不是本地,然后您可以获取/rebase(或 pull --rebase)而无需切换到本地 master 进行拉取。 是的,master 是每个人的公共分支,我们创建新分支并合并回它。没有人在 master 上写东西(除了非常罕见的热修复) 好吧....不需要保留本地主机...实际上,您可以保留它...但是您的功能分支(或其他)可以不是从本地主机启动,而是从远程启动掌握。然后,正如我在之前的评论中解释的那样,您无需切换到本地 master 即可在其之上重新调整您的功能。 ***.com/questions/520650/… 【参考方案1】:

我正是为此创建了 git 别名。把它放到你的 ~/.gitconfig 中

[alias]
  update = "!fn()  \
    repo=$2:-origin; \
    if [[ $(git rev-parse --abbrev-ref HEAD) = \"$1\" ]]; \
    then \
        git pull \"$repo\"; \
    else \
        git fetch \"$repo\" \"$1\":\"$1\"; \
    fi; \
    ; fn"

然后您可以使用git update master 来更新您的本地主机,而无需切换到它。或者,如果您的遥控器不是origin,而是upstream,您可以使用git update master upstream。 Intellij 呢,似乎没有开箱即用的功能。

【讨论】:

【参考方案2】:

假设您谈到的 master 分支位于名为 upstream 的远程,您可以在推送代码之前运行接下来的 2 个命令:

git fetch git rebase upstream/master

如果您没有设置任何远程,默认远程名称是 origin,在这种情况下,命令是:

git fetch git rebase origin/master

git fetch 不会更改您的任何本地分支,它只会提供有关服务器上存在的内容的 git 信息。

这是一个相关的 *** 问题,您可能还想在有时间的时候查看:How to rebase local branch with remote master

【讨论】:

以上是关于将 master 拉到 Intellij 的另一个分支上的主要内容,如果未能解决你的问题,请参考以下文章

Intellij 正在合并两个同名文件夹

如何将 main 方法移动到 Scala 中的另一个类?

我在 IntelliJ 首选项/设置中的哪个位置指定 JVM?

将远程分支拉入不同名称的本地仓库?

在github上拉远程master分支的问题[重复]

如何将当前分支与 Visual Studio 2019 中的另一个分支进行比较?