1

我有一个功能分支,我正试图与远程主控保持更新。我也想更新我的本地主人。我不在master上工作,但最好保持更新。

这是我的工作流程

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

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

4

3 回答 3

2

正如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>

于 2013-07-13T06:01:54.893 回答
1

如果您的 master 不在 origin/master 之前,那么您可以使用更少的命令来完成它,尽管它确实有点 hacky:

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

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

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

于 2013-07-12T21:50:33.050 回答
1
(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 中的主分支。

于 2013-07-12T22:23:16.290 回答