我有一个功能分支,我正试图与远程主控保持更新。我也想更新我的本地主人。我不在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更新您的本地。然后它将您当前的分支(确保它是)重新设置在您的本地.mastermasterfeature_branchmaster
使用的优点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 中的主分支。