说我现在的分支是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
,你可能不需要实际进行这种合并”。
答案 0 :(得分:22)
git fetch -u origin master:master
Merge, update, and pull Git branches without using checkouts
git fetch -u <remote> <remoteBranch>:<localBranch>
答案 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_BRANCH
,gitk --all
等。 / p>
根据您的需要,这可能就足够了。特别是,您可以查看从origin/master
到master
需要应用的内容,而无需离开当前分支。
答案 2 :(得分:1)
我已经开始使用github的hub sync
帮助程序来自动化此过程,而不是依赖于获取在您正在使用的各种存储库之间改变的单个分支:
hub是命令行git的扩展,可帮助您执行日常GitHub任务而无需离开终端。 https://hub.github.com/
$ hub sync
- 如果本地分支已过时,则将其快进;
- 如果本地分支机构包含未完成的工作,请对其进行警告;
- 如果分支似乎已合并并且其上游分支已删除,则将其删除。