如何git svn获取+;在一次操作中重新设置基础?
我刚刚发现,尽管git help svn中的如何git svn获取+;在一次操作中重新设置基础?,git,git-svn,Git,Git Svn,我刚刚发现,尽管git help svn中的rebase部分说 此从当前头部和头部的SVN父级获取修订 重新调整当前(未提交给SVN)工作的基础 (我强调)这并不意味着rebase包含git svn fetch。撇开命名不谈,是否有办法运行一个单一git svn命令来同时执行这两项操作 我想这样做的原因是我只在一个分支上写,所以我想rebase那个分支,并且我经常阅读其他分支,所以我想fetch那个分支 git pull --rebase 您还可以对其进行配置,使其在默认情况下重新调整。然后你
rebase
部分说
此从当前头部和头部的SVN父级获取修订
重新调整当前(未提交给SVN)工作的基础
(我强调)这并不意味着rebase
包含git svn fetch
。撇开命名不谈,是否有办法运行一个单一git svn
命令来同时执行这两项操作
我想这样做的原因是我只在一个分支上写,所以我想rebase
那个分支,并且我经常阅读其他分支,所以我想fetch
那个分支
git pull --rebase
您还可以对其进行配置,使其在默认情况下重新调整。然后你可以:
git pull
更新:
哎呀。需要更多的咖啡
我所能想到的就是编写您需要的脚本。我也有点惊讶地听说这实际上就是它的行为方式。但是,要回答您的问题,您只需要定义一个别名:
git配置--global alias.refetch'!git svn fetch&&git svn rebase'
然后,
git refetch
应该做你想做的事。我认为你把git-rebase
和git-svn-rebase
搞混了。前者将提交到您指定的某个修订版的当前头部,而后者将当前头部移动到您所在的Subversion分支的顶端
git svn rebase
确实包含一个git svn fetch--parent
,即它将在您当前所在的分支上获得任何新的Subversion提交,但不会从任何其他分支获得任何Subversion提交(与从所有分支获取的普通git svn fetch
)
我怀疑当您执行
git svn rebase
时,您不想执行完整的git svn fetch
,因为这意味着您需要更长的时间才能获得可用的工作副本。如果您想要常规的git svn fetch
es,我建议您设置一个cron作业,在后台为您执行fetch操作。我不知道在问这个问题时这是否可行,但我认为git svn rebase
确实git svn fetch--parent;git重新设置git svn的基础
。至少这对我有用。似乎git svn
创建了名为git svn
的git伪分支,可以使用git
与之交互。但是这个分支不能被普通的git
修改
如果您希望使用rebase实现fullfetch
,则可以调用git svn fetch;git重新设置git svn的基础
用一种别名语言(正如公认的答案所做的那样):git config--global alias.refetch'!git svn fetch和&git rebase git svn'
我没有使用git svn
的经验,但是普通的git pull
可以配置为使用rebase
而不是merge
,这种方式可以完成您想要的两个步骤。如果我知道如何使用git svn
,我会发布一个答案——只需寻找一个与git config branch.autosetuprebase always
等效的答案。试试看。首先它获取,然后它重新设定。不,它没有git svn rebase
不从远程获取新分支,而git svn fetch
从远程获取新分支。我刚试过。@AdamDymitruk:这不是关于香草git
——而是关于git svn
。很公平;看起来没有标准的方法可以做到这一点。你到底为什么要获取所有svn回购,只是为了重新设定单个的基础?@l0b0:没有标准的方法可以做到这一点,因为这不是使用git svn
的标准方法git svn rebase
旨在让您的当前分支达到Subversion提示,因此它会以快速获得有用的工作副本的名义忽略任何其他Subversion分支git svn fetch
更新Subversion存储库中的所有内容,因此这通常是一个慢得多的操作。我真的很困惑你到底想实现什么,这意味着你需要能够做到这一点。为了让意图更加清晰,可以使用alias.svnfetch
甚至alias.svnfetchall
。通过这种方式,很明显SVN被用作传入提交的源。一开始我被svn-rebase
的工作原理弄糊涂了。特别是考虑到没有svn的git的典型工作流。在合并之前,很容易忘记svn获取
然后svn重设每个分支的基础
。也许我遗漏了一些东西。这是一篇很老的帖子,但我觉得它仍然有意义。我绝对希望在做git svn重基之前获得所有分支更新。为什么?因为如果不这样做,我在合并时会遇到很多问题。在合并之前,很容易忘记获取要合并的每个分支,并执行以下操作:git svn rebase&&git checkout master&&git merge feature
,然后才意识到没有从svn更新正确的分支。如果使用git svn支持更好的分支,那么在重定基址之前总是git svn获取所有内容是有意义的。如果您没有git svn dcommit
stomps处理所有事务。如果svn repo中有太多分支并且需要花费很长时间,则从分支:
配置行中删除*
,只处理您通常处理的分支。如果您正在做一个master->dev->feature
组合,那么使用通配符和git配置文件只处理那些分支就很容易了。这样,当您git svn fetch
时,就不会得到不需要的分支git-svn-rebase
完全打破了我过去的git和svn-repo,因为它没有svn提前获取分支。这对我来说翻译不好。我可能是这里的少数派。