我刚刚发现,即使git help svn
中的rebase
部分显示
此从当前HEAD的SVN父级获取修订对当前(未提交给SVN)的工作进行调整。
(我强调)这并不意味着rebase
包括一个git svn fetch
。撇开命名不谈,是否有某种方法可以运行单个git svn
命令来同时执行?
我想这样做的原因是,我只在一个分支上写,所以我想rebase
那个分支,我经常读取其他分支。所以我想把它们fetch
。
我认为您混淆了git rebase
和git svn rebase
。前者将提交到您指定的某个修订版上的当前HEAD,而后者将您当前的HEAD移动到您所在的Subversion分支的顶端。
git svn rebase
确实包含git svn fetch --parent
,即它将在您当前所在的分支上获得任何新的Subversion提交,但不会从任何其他分支获得任何Subversion提交(与从所有分支获取的普通git svn fetch
相比)。
我怀疑你在做git svn rebase
时不想做完整的git svn fetch
,因为这意味着你需要更长的时间才能得到可用的工作副本。如果您想要常规的git svn fetch
es,我建议您设置一个cron作业,该作业将在后台为您进行提取。
听说它实际上就是这样的,我也有点惊讶。但是,要回答您的问题,您只需要定义一个别名:
git config --global alias.refetch '!git svn fetch && git svn rebase'
那么git refetch
应该做你想做的事。
我不知道在问这个问题时这是否可能,但我认为git svn rebase
确实是git svn fetch --parent ; git rebase git-svn
。至少这对我来说是有效的。看起来git svn
创建了git
伪分支,称为git-svn
,可以使用git
与之交互。但是这个分支不能用普通的git
来修改。
如果您想要完整的fetch
和rebase,您可以致电git svn fetch ; git rebase git-svn
。
把它放在一种别名语言中(就像公认的答案一样):git config --global alias.refetch '!git svn fetch && git rebase git-svn'
git pull --rebase
您也可以对其进行配置,使其在默认情况下重新定基。然后你可以:
git pull
更新:
哎呀。需要更多的咖啡。。。
我所能想到的就是编写你需要的脚本。。