Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
`git-svn-rebase`vs`git-rebase-trunk`_Git_Svn_Rebase - Fatal编程技术网

`git-svn-rebase`vs`git-rebase-trunk`

`git-svn-rebase`vs`git-rebase-trunk`,git,svn,rebase,Git,Svn,Rebase,我正在从事一个项目,该项目使用subversion作为他们的存储库。因为我需要做一些还不能发送到svn服务器的更改,所以我开始使用git svn,以便进行本地签入。我的设置如下所示: 分支:主干(跟踪svn主干)、主(非常接近svn中的内容)和主题 *------------------ trunk \ *-----------*--------- master \ *-------- topic 工作流: [on branc

我正在从事一个项目,该项目使用subversion作为他们的存储库。因为我需要做一些还不能发送到svn服务器的更改,所以我开始使用
git svn
,以便进行本地签入。我的设置如下所示:

分支:主干(跟踪svn主干)、主(非常接近svn中的内容)和主题

*------------------ trunk
 \
  *-----------*--------- master
               \
                *-------- topic
工作流:

[on branch master]
$ git svn fetch
$ git svn rebase
$ git checkout -b topic
$ git rebase master
[hack hack hack]
$ git commit -a
[once upstream is ready for my changes]
$ git svn fetch
$ git checkout master
$ git svn rebase
$ git checkout topic
$ git rebase master
$ git svn dcommit
$ git checkout master
$ git svn rebase
$ git branch -d topic
假设在
git-svn-fetch
git-svn-rebase
之间没有人向svn提交请求, 是否
git-svn-rebase
在主机上运行与
git-rebase-trunk
在主机上运行基本相同?

是否有更合理的工作流程可供使用?似乎有很多分支正在更改和重新定基。我知道我希望能够在svn中的任何内容上重新调整我的工作,但似乎我所做的调整比严格必要的要多。

注意,从,如“”中所述:

这将从当前头部的SVN父级获取修订,并对当前(未提交给SVN的)工作进行重定

因此,在
git checkout master
git svn rebase
之前,您不需要
git svn fetch
,特别是如果您只跟踪
trunk
master
的父级)


第二点,
git svn dcommit
将为
master
上的每个新提交在svn中创建修订,但您的工作流不会在
master
上显示任何新提交,只在
主题上显示(在
master
上从未合并)


评论意见:

根据这些文档,
git svn dcommit
在没有指定分支的情况下将提交推到当前头上,而不仅仅推到
master
上。因此,我从我的分支提交到SVN,然后依靠
master
上的
git SVN rebase
将提交从SVN带回。我在
d提交后放弃
主题
分支。这不是犹太教吗

他详细说明:

我不能把他们送到SVN。。。然而上游想要“冻结”主干以备发布,同时,我正在为下一个版本开发功能


但最终的问题是,“git-rebase-trunk-master与主分支上的git-svn-rebase相同吗?”如果是,那么我不需要不断地更改分支,只需要根据svn重新设置主分支的基础。但如果不是,当我git svn rebase时,会发生一些神奇的事情,我想知道

对此,我的答复是:


一个
git svn fetch
后接一个
git rebase trunk master
将相当于一个
git svn rebase

第一个:所以在我
git svn rebase
之前我不需要
git svn fetch
。。。只要我在
主机上
。但是如果我在
主题上
git svn fetch
将更新
主干
,但将
主机
主题
单独保留。我从来没有
git-svn-rebase
我的主题分支,我只是
git-rebase
it。知道起来很有趣。@SeanMcMillan“只要我在master上”:是的,这就是我的想法。每次都要执行
git checkout master
,因此……在第二次:根据文档,
git svn dcommit
在没有指定分支的情况下将提交推到当前头上,而不仅仅推到
master
。因此,我从我的分支提交到SVN,然后依靠
master
上的
git SVN rebase
将提交从SVN带回。我在提交后放弃
主题
分支。这不是犹太教吗?@SeanMcMillan我不知道你为什么会在讨论这个话题时
dcommit
,因为你的问题的一个前提是你“需要做一些不能发送到svn服务器的更改”。这就是为什么我质疑
dcommit
的使用。但最终的问题是,“git-rebase-trunk-master
是否与主分支上的
git-svn-rebase
相同?”如果是,那么我不需要不断更改分支,只需要根据svn重新设置主分支的基础。但如果不是这样,当我
git svn rebase
时,会发生一些神奇的事情,我想知道。
git svn rebase