我有一个功能分支,我正试图与远程主控保持更新。我也想更新我的本地主人。我不在master上工作,但最好保持更新。
这是我的工作流程
(feature_branch)> git checkout master
(master)> git pull --rebase
(master)> git checkout feature_branch
(feature_branch)> git rebase master
我可以用更少的命令来做吗?
我有一个功能分支,我正试图与远程主控保持更新。我也想更新我的本地主人。我不在master上工作,但最好保持更新。
这是我的工作流程
(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
更新您的本地。然后它将您当前的分支(确保它是)重新设置在您的本地.master
master
feature_branch
master
使用的优点git fetch master:master
是它不需要您master
在从远程仓库更新之前检查您的分支。这是Git fetch 文档解释语法如何工作的方式:
参数的格式
<refspec>
是可选的加号+
,后跟源引用<src>
,后跟冒号:
,然后是目标引用<dst>
。获取匹配的远程引用,
<src>
如果<dst>
不是空字符串,则使用 快速转发匹配它的本地引用<src>
。如果使用可选加+
号,则更新本地 ref,即使它不会导致快进更新。
因此,在我给出的示例中,说要从git fetch master:master
远程master
存储库中获取.<src>
<dst>
master
<dst>
<src>
如果您的 master 不在 origin/master 之前,那么您可以使用更少的命令来完成它,尽管它确实有点 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)>
--rebase
如果您配置,您可能会在git pull
通话中摆脱
rebase = true
对于 .git/config 中的主分支。