如何进入非当前分支?

时间:2012-03-17 06:07:38

标签: git git-pull git-checkout git-stash

说我现在的分支是myfeature。我想让大师了解最新动态。据我所知,git merge git pull总是合并到当前分支中。

有没有办法将更改从远程分支(例如,origin / master)合并到我当前不在的分支(master)?我可以想到一个方法:

git stash
git checkout master
git pull origin/master
git checkout myfeature
git stash apply

有更好的吗?

(可能我的整个问题是错误的:如果启用了远程跟踪,git fetch会自动更新master以匹配origin / master吗?)

答案

总结下面的答案,它基本上是“直接使用origin/master,你可能不需要实际进行这种合并”。

3 个答案:

答案 0 :(得分:22)

git fetch -u origin master:master

Merge, update, and pull Git branches without using checkouts

git fetch -u <remote> <remoteBranch>:<localBranch>

-u确保命令仍然有效even if you have the given branch checked out

答案 1 :(得分:3)

你是正确的,拉/合并只合并到当前分支。

但是,您仍然可以使用fetch。例如(以下名称改为保护无辜,但哈希是真实的):

$ git branch | grep '^*'
* SOMEBRANCH
$ git rev-parse OTHER_BRANCH origin/OTHER_BRANCH
7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe
7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe
$ git fetch
7b9b8e5..1efca56  OTHER_BRANCH -> origin/OTHER_BRANCH
$ git rev-parse OTHER_BRANCH origin/OTHER_BRANCH
7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe
1efca56c08b7a0f511a3951195656a798c56aa62

在这种情况下,fetch更新了一堆原点/分支。没有更新本地分支(git rev-parse输出保持不变)但新提交现在在回购中,可以查看(git log origin/OTHER_BRANCHgitk --all等。 / p>

根据您的需要,这可能就足够了。特别是,您可以查看从origin/mastermaster需要应用的内容,而无需离开当前分支。

答案 2 :(得分:1)

我已经开始使用github的hub sync帮助程序来自动化此过程,而不是依赖于获取在您正在使用的各种存储库之间改变的单个分支:

  

hub是命令行git的扩展,可帮助您执行日常GitHub任务而无需离开终端。 https://hub.github.com/

$ hub sync
  
      
  • 如果本地分支已过时,则将其快进;
  •   
  • 如果本地分支机构包含未完成的工作,请对其进行警告;
  •   
  • 如果分支似乎已合并并且其上游分支已删除,则将其删除。
  •