在Intellij中切换到另一个分支后,如何拉取master分支

4
当我在我的分支上时,我想从主分支中获取最新的代码版本,然后将我的分支变基到主分支上,并在将我的分支推送到服务器并创建拉取请求之后。今天我是这样做的:
- 我在 `my_branch` 上,切换到 `master` 分支。 - 切换后,在 `master` 分支上,我执行 `git pull` 或在 IntelliJ 中使用图形界面 `VCS->git->pull` 。 - 然后我回到 `my_branch` 并执行变基。 - 变基完成后,我执行 `git push -f`。
有没有办法避免在 IntelliJ 中从 `my_branch` 切换到 `master` ,然后再切换回来?有没有一种方法可以在其他分支上保持不变的情况下拉取 `master` 的代码呢?

2
你的本地主分支总是和远程主分支一样吗?如果是这样的话,你可以设置你的特性分支来跟踪远程主分支,而不是本地主分支,这样你就可以在不切换到本地主分支的情况下进行拉取/变基(或者拉取时使用 --rebase 参数)。 - eftshift0
是的,“master” 是每个人都共用的一个常见分支,我们会创建新的分支并将其合并回去。除了相当罕见的热修复之外,没有人会在 master 上编写代码。 - Vitalii
2
好的...不需要保留本地主分支...实际上,你可以保留它...但是你的特性分支(或其他分支)可以从远程主分支开始。这样,你就不需要切换到本地主分支来将你的特性分支重新基于它进行变基,就像我在之前的评论中解释的那样。 - eftshift0
https://dev59.com/mnRB5IYBdhLWcg3wxZ1K - eftshift0
2个回答

2
假设你所说的主分支位于一个名为upstream的远程仓库中,在推送代码之前,你可以运行以下两个命令: ``` git fetch git rebase upstream/master ``` 如果你没有设置任何远程仓库,默认的远程仓库名称是origin,在这种情况下,命令如下: ``` git fetch git rebase origin/master ``` `git fetch` 命令不会更改任何本地分支,它只会告诉 git 服务器上存在哪些内容。
这里有一个相关的 StackOverflow 问题,当你有时间时,也可以看一下:如何将本地分支与远程主分支合并?

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,似乎没有这个功能。


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