2025-05-20 06:00:00

Git拉另一个分支

如果我在一个分支上工作,然后意识到我需要将另一个分支合并到我的这里是我当前的工作流程(在这个例子中,让我们说我正在我的分支上工作,并希望在master中合并):

git stash
git checkout master
git pull
git checkout my-branch
git merge master
git stash pop

在git中是否有一种方法来拉一个分支,而不是当前签出的一个,或者是否有更好的方法来做到这一点?

例如,下面是我希望能够做的事情(再次假设我在我的分支上,想要在master中合并):

git pull master
git merge master

git-pull手册页上说,git pull只是一个get fetch,然后是git merge,那么有一种方法可以在当前签出的分支之外的分支上执行git pull的合并部分吗?

还是我的要求根本不可能实现?


当前回答

从branch1拉入变更到branch2

假设你有这些分支:

主 branch1 branch2

所以你想从branch1拉入变更到branch2。以下是你可以做的:

git checkout branch2
git pull origin branch1

其他回答

试试这个:

git pull yourRepositoryName master

我们可以使用git pull命令从同一存储库中的另一个分支获取更改,如下所示:

$ git pull origin <target-branch>

参见man git-pull的示例部分:

•将远程分支合并到当前分支中: $ git下拉原点

可靠的方法是:

git checkout master
git pull --ff origin master
git checkout devel
# git merge --ff devel

所以有一个别名

git config --global alias.update-branch '! bash -c "X1=\`git symbolic-ref HEAD 2> /dev/null | cut -b 12-\`; echo pulling branch $1 ... && git checkout $1 && git pull --ff origin $1 && git checkout \$X1 "'

# call it from 'devel' branch:
git update-branch master

您可以改进它以符合您的要求,例如现在将master合并到当前分支....

我发现了一个对我有用的咒语:

git fetch origin master:master

然后(如果你想立即合并):

git merge master

我真的很惊讶找到这个问题的答案是多么困难,因为它似乎是一个常见的用例。

如果你经常合并一些远程分支到你的“feature/*”分支中,比如“master”,“develop”或“release/*”,那么最好的策略不是合并,而是重新基于一个远程分支。然后从你的分支提交将被应用到其他分支的历史上。它可以快速向前合并到这个远程分支之后。

git pull origin master
git rebase master