如何在一个操作中获取svn-fetch+rebase



我刚刚发现,即使git help svn中的rebase部分显示

从当前HEAD的SVN父级获取修订对当前(未提交给SVN)的工作进行调整。

(我强调)这并不意味着rebase包括一个git svn fetch。撇开命名不谈,是否有某种方法可以运行单个git svn命令来同时执行

我想这样做的原因是,我只在一个分支上写,所以我想rebase那个分支,我经常读取其他分支。所以我想把它们fetch

我认为您混淆了git rebasegit 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 fetches,我建议您设置一个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

更新:

哎呀。需要更多的咖啡。。。

我所能想到的就是编写你需要的脚本。。

相关内容

最新更新