繁体   English   中英

我如何一次性从远程拉到主机并从主机转换到我的功能分支?

[英]How do I pull and rebase from remote to master and rebase from master to my feature branch in one shot?

我有一个功能分支,我正在尝试使用远程主站进行更新。 我也想让我的本地主人更新。 我不是在做高手,但保持更新是件好事。

这是我的工作流程

(feature_branch)> git checkout master
(master)> git pull --rebase
(master)> git checkout feature_branch
(feature_branch)> git rebase master

我可以用更少的命令来做吗?

正如Nathan建议的那样 ,你可以创建一个Git别名来将一堆命令组合成一个:

$ git config --global alias.sync \
"!git fetch <remote> master:master && git rebase master"

# With the feature branch checked out
$ git sync

这将设置一个别名sync ,该sync首先使用仅快进合并从远程master更新本地master 然后它会在你当地的master之上重新安排你当前的分支(确保它是feature_branch )。

使用git fetch master:master的优点是,在从远程仓库更新master分支之前,它不需要您检查master分支。 这就是Git提取文档解释语法如何工作的方式:

<refspec>参数的格式是可选的+ ,后跟源ref <src> ,后跟冒号: ,后跟目标ref <dst>

获取与<src>匹配的远程引用,如果<dst>不是空字符串,则使用<src>快速转发与其匹配的本地引用。 如果使用可选的plus + ,则即使不导致快进更新,也会更新本地引用。

因此,在我给出的示例中, git fetch master:master表示从远程repo中获取master作为<src> ,并且由于<dst>是非空的(它是右侧,本地master ),Git尝试快速-forward使用<src>合并<dst> <src>

如果你的主人不在原点/主人之前,那么你可以用一个较少的命令来做,虽然它确实有点hacky:

git fetch
git push . origin/master:master
git rebase master

如果你的主人领先于原点/主人,那么我不知道有什么比你正在做的更快的方法。 当然,您可以为它创建别名或shell函数。

编辑: Cupcake的答案肯定是最好的解决方案,现在我知道fetch中的refspec会启动ff合并!

(master)> git checkout feature_branch
(feature_branch)> git rebase master

可以组合成一个命令:

(master)> git rebase master feature_branch
(feature_branch)>

如果你配置,你可以在git pull调用中摆脱--rebase

rebase = true

对于.git / config中的主分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM