SVN和Github的git分支

SVN和Github的git分支,git,svn,github,git-svn,git-branch,Git,Svn,Github,Git Svn,Git Branch,下面是我正在做的一个简单的路径: $ cd /newdir $ git clone git@github.com:... . $ git branch -m master github $ git svn clone svn+ssh://... . $ git branch -m master SVN 然后,我有一些脚本,可以在推到Github之前执行所需的操作 我需要SVN和github分支,因为两个分支上的文件相同,但内容不同。在将文件推送到Github之前,我添加了一些头文件。这两个分支

下面是我正在做的一个简单的路径:

$ cd /newdir
$ git clone git@github.com:... .
$ git branch -m master github
$ git svn clone svn+ssh://... .
$ git branch -m master SVN
然后,我有一些脚本,可以在推到Github之前执行所需的操作

我需要SVN和github分支,因为两个分支上的文件相同,但内容不同。在将文件推送到Github之前,我添加了一些头文件。这两个分支还用于不允许SVN上的所有文件都转到Github

所有更新都是从SVN分支到github分支的。偶尔我会在github分支上添加一些不在SVN上的东西。我永远不会将文件/更新从github branch发送到SVN branch

我的问题1是,每次我执行git svn fetch时,都会创建一个新的主分支。我如何告诉git svn fetch使用svn本地分支而不是主本地分支

每次之后:

$ git svn fetch
我可以:

$ git checkout SVN
$ git merge master
$ git branch -d master
但这并不是一种明智的做法

然后,我在告诉本地git本地github分支是github的远程/主分支时遇到了一个问题。命令

$ git push git@github.com:...
在重新命名本地分支机构之前,这项工作非常有效,但现在并不是我想要的

所以我有两个问题:

1 - Telling git svn to always use local SVN branch when getting updates from SVN server
2 - Telling git that local github branch is remote master branch at github

您可以使用与基于SVN的分支合并(请阅读
git SVN
手册;它在多个地方非常仔细地说明了这一点)。如果需要合并,请使用另一种方法,将SVN树合并到其他分支中(但永远不要将其他内容合并到SVN树中)

gitsvn
拥有
master
分支,如果您需要在单独的分支中进行开发,请自己使用另一个分支(比如
master2
)。然后,当您希望将it中的工作提交给主分支机构时,请执行以下操作:

git checkout master2
git rebase master
git checkout master
git merge --ff-only master
当您添加github主repo时,请在单独的分支中执行:

git checkout master
git checkout -b githubmaster
git remote add github .....
git pull github master
只需始终执行上述操作,即可拉入特定于github的分支。但是,当您在执行REBASE后需要推回到github流中时,您可能会遇到github服务器的问题,因此需要谨慎,并在出现分歧后使用
push-f
强制更新github树


好吧,从技术上讲,我谎称无法合并到SVN树中。但实际上,如果你不这样做,你会省去很多麻烦。事实上,
gitsvn
并不意味着它是一个完全集成的git系统。它实际上只是一个比SVN本身“更好的SVN客户端”。您真的不能使用
gitsvn
而期望获得git本身的全部功能。不幸的是,这是真的。我知道,因为我已经走了你的路,正在做你想做的事。结果是,你真的不能进行合并,并让所有这些都很好地发挥在一起。SVN就是无法处理它。

首先通过git clone克隆gitHubgit@git.corp.xyz.com:公司 然后git签出(分支的名称) 然后是git分支(将显示分支的nam)