我刚刚发现即使rebase
中的git help svn
部分说
此从当前HEAD的SVN父级获取修订版本 将当前(未提交到SVN)的工作重新加以反对。
(我的重点)并不意味着rebase
包含一个git svn fetch
。除了命名,有没有办法运行单git svn
命令来同时执行?
我想这样做的原因是我只在一个分支上写,所以我想rebase
那个,我经常读取其他分支 ,所以我想fetch
那些。
答案 0 :(得分:20)
我认为你让git rebase
和git svn rebase
感到困惑。前一个移动会将您当前的HEAD提交到您指定的某个修订版,而后者会将您当前的HEAD移动到您所在的Subversion分支的顶端。
git svn rebase
包含git svn fetch --parent
,即它将在您当前所在的分支上获得任何新的Subversion提交,但不会从任何其他分支进行任何Subversion提交(与从所有分支取得的普通git svn fetch
形成对比)。
我怀疑你做git svn fetch
时不想做一个完整的git svn rebase
,因为这意味着在获得可用的工作副本之前它会更长。如果您想要定期git svn fetch
es,我建议您设置一个cron作业,为您在后台进行提取。
答案 1 :(得分:8)
听到这实际上是它的行为方式,我也有点惊讶。但是,要回答你的问题,你只需要定义一个别名:
git config --global alias.refetch '!git svn fetch && git svn rebase'
然后git refetch
应该做你想做的事。
答案 2 :(得分:0)
我不知道问这个问题时这是否可行,但我认为 git svn rebase
确实 git svn fetch --parent ; git rebase git-svn
。至少这对我有用。 git svn
似乎创建了名为 git
的 git-svn
伪分支,可以使用 git
与之交互。但是这个分支不能被普通的 git
修改。
如果您想要带有变基的完整 fetch
,您可以调用 git svn fetch ; git rebase git-svn
。
把它放在别名语言中(正如公认的答案所做的那样):git config --global alias.refetch '!git svn fetch && git rebase git-svn'
答案 3 :(得分:-3)
git pull --rebase
您也可以对其进行配置,以便默认情况下进行重新定位。然后你可以:
git pull
更新:
糟糕。需要更多咖啡......
我能想到的就是编写你需要的东西..