去拉另一根树枝

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

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

在 git 中,除了当前检出的分支之外,还有其他方法可以提取分支吗? 还是有更好的方法可以做到这一点?

例如,下面是我希望能够做的事情(再次让我们假设我在 my-Branch 上,并希望在 master中合并) :

git pull master
git merge master

Git-pull 手册页说 git pull 只是一个 get 提取,然后是 git 合并,那么有没有办法在一个分支上进行 git 提取的合并部分,而不是当前检查的那个分支?

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

297989 次浏览

试试这个:

git pull yourRepositoryName master

你也可以试试这个:

git fetch
git merge origin/master

这不会更新本地 master指针,但会将最新的 origin/master合并到当前的本地分支中。

我找到了一个适合我的咒语:

git fetch origin master:master

然后(如果你想马上合并) :

git merge master

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

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

$ git pull origin <target-branch>

参见 man git-pullEXAMPLES部分:

   •   Merge into the current branch the remote branch next:


$ git pull origin next

拉入从分支1到分支2的更改

假设你有这些分支:

  • 师父
  • 分行1
  • 分行2

所以你想要 拉入从分支1到分支2的变化,你可以这样做:

git checkout branch2
git pull origin branch1

可靠的方法是:

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

您可以改进它,使其符合您的要求,比如现在就将主服务器合并到当前分支中,... ..。

如果您通常将一些远程分支合并到您的“ Feature/*”分支中,比如“ master”、“ development”或“ release/*”,那么最好的策略不是合并,而是将其重新基于远程分支。然后,您的分支的提交将应用于其他分支的历史记录。它可以在以后快速前进合并到这个远程分支中。

git pull origin master
git rebase master

第一步:

git checkout yourBranch

第二步:

git fetch origin master

第三步:

git pull origin master