2012-03-21 35 views
8

我刚刚发现,即使在git help svnrebase节说如何在一个操作中git svn fetch + rebase?

当前磁头的SVN父取修订和 变基当前的(未提交到SVN)反对它。

(我的重点),它并不意味着rebase包括一个git svn fetch。除了命名,有没有办法运行一个git svn命令做

我想这样做的原因是,我只写一个分支,所以我想rebase一个和我经常阅读其他分支,所以我想fetch那些。

+0

我对'git svn'没有任何经验,但普通'git pull'可以配置为使用'rebase'而不是'merge',这样就可以执行所需的两个步骤。如果我知道如何使用'git svn'来发布答案 - 只要查找一个等价的'git config branch.autosetuprebase always'。 – 2012-03-21 15:19:22

+0

确实如此。你试一试。首先它取得,然后它rebase。 – 2012-03-21 16:36:23

+2

不,它不。 'git svn rebase'不会*从远程获取新的分支,而'git svn fetch'则会。我只是试了一下。 – l0b0 2012-03-21 16:42:33

回答

8

我也有点惊讶地听到,这其实是它的行为方式。但是,要回答你的问题,你只需要定义一个别名:

git config --global alias.refetch '!git svn fetch && git svn rebase'

然后git refetch应该做你想要什么。

+0

够公平的;看起来像没有标准的方法来做到这一点。 – l0b0 2012-03-22 14:48:25

+0

为什么在地球上你想获取所有svn回购仅仅是为了重新绑定一个? – 2012-03-25 00:47:21

+0

@ l0b0:没有标准的方法来实现它,因为它不是使用'git svn'的标准方式。 'git svn rebase'旨在让你的当前分支上升到Subversion的提示,所以它忽略了任何其他Subversion分支的名字,让你快速获得有用的工作副本。 'git svn fetch'更新了Subversion版本库中的所有内容,所以经常是一个非常慢的操作。我对你实际想要达到的目标感到困惑,这意味着你需要做到这一点。 – 2012-03-25 10:47:17

-3
git pull --rebase 

您也可以对其进行配置,使其在默认情况下重置。然后,你可以:

git pull 

UPDATE:

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

所有我能想到的是脚本,你需要什么..

+0

从svn回购拉? – 2012-03-21 16:36:52

+0

@AdamDymitruk:这是* not *关于vanilla'git' - 关于'git svn'。 – l0b0 2012-03-21 17:02:21

19

我觉得你很困惑git rebasegit svn rebase。前者将提交到您当前的HEAD,并指定一些版本,而后者会将当前的HEAD移动到您所在的Subversion分支的顶端。

git svn rebase包括git svn fetch --parent,也就是说,它会得到什么新的Subversion提交你目前所在的分支,但没有任何颠覆任何其他分支(与普通git svn fetch对比,这从各个分支获取提交)。

我怀疑你不想在做一个git svn rebase时做一个完整的git svn fetch,因为这意味着在你获得一个可用的工作副本之前它会长得多。如果你想要经常使用git svn fetch es,我建议设置一个cron作业,为你做后台提取。

+0

你是如此的正确 – 2012-03-25 00:45:13

+0

不错的旧帖子,但我觉得它仍然相关。我绝对想在执行git svn rebase之前获得所有分支更新。为什么?因为如果我不这样做,我在合并时遇到了很多问题。在合并之前忘记获取要合并的每个分支并且执行此操作太容易了:'git svn rebase && git checkout master && git merge feature''然后才意识到您没有从SVN更新正确的分支。如果你正在使用git svn来支持更好的分支,那么在重新绑定之前始终应该“git svn fetch”所有东西。如果你没有'git svn dcommit'跺脚的一切。 – 2016-10-18 16:27:09

+0

如果SVN仓库中有太多的分支,并且需要永久存储,那么从'branches:'配置行删除'*',并且只处理通常工作的分支。如果你正在做'master - > dev - > feature'组合,很容易只处理那些使用通配符和git配置文件的分支。这样,当你'git svn fetch'你没有得到不需要的分支。 'git svn rebase'已经完全破坏了我的git和svn回购版,因为它没有提前拿到分支机构。它对我来说并不好。我可以在这里成为少数。 – 2016-10-18 16:30:16