1

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

$ 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 分支发送到 SVN 分支。

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

之后:

$ 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
4

2 回答 2

1

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

让分支,如果您需要在单独git svnmaster分支中进行开发,请为自己使用另一个分支(例如master2)。然后,当您希望将其中的工作提交到主分支时,请执行以下操作:

git checkout master2
git rebase master
git checkout master
git merge --ff-only master

当您添加 github 主存储库时,请在单独的分支中执行此操作:

git checkout master
git checkout -b githubmaster
git remote add github .....
git pull github master

并且只需始终执行上述操作以拉入 github 特定分支。但是当你需要在做 rebase 后推回 github 流时,你可能会遇到 github 服务器的问题,因此需要push -f在分歧后强制更新 github 树。

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

于 2012-10-31T13:51:38.840 回答
-1

首先通过 git clone git@git.corp.xyz.com:corp 克隆 gitHub,然后 git checkout(分支名称)然后 git branch(将显示分支名称)

于 2014-12-09T01:23:14.303 回答