gpt4 book ai didi

svn - 使用 git-svn 和 github 跟踪上游 svn 变化?

转载 作者:IT王子 更新时间:2023-10-29 00:43:58 25 4
gpt4 key购买 nike

如何使用 git-svn 和 github 跟踪上游 SVN 更改?

我使用 git-svn 将 SVN 存储库转换为 github 上的 git:

$ git svn clone -s  http://svn.osqa.net/svnroot/osqa/ osqa
$ cd osqa
$ git remote add origin git@github.com:turian/osqa.git
$ git push origin master

然后我在我的 git 存储库中做了一些更改,提交并推送到 github。

现在,我在一台新机器上。我想获取上游 SVN 更改,将它们与我的 github 存储库 merge ,并将它们推送到我的 github 存储库。 This documentation说:“如果您丢失了本地副本,只需使用相同的设置再次运行导入,您将获得另一个包含所有必要 SVN 元信息的工作目录。”

所以我做了以下事情。但是没有一个命令按预期工作。如何使用 git-svn 和 github 跟踪上游 SVN 更改?我做错了什么?

$ git svn clone -s  http://svn.osqa.net/svnroot/osqa/ osqa
$ cd osqa
$ git remote add origin git@github.com:turian/osqa.git
$ git push origin master
To git@github.com:turian/osqa.git
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:turian/osqa.git'
$ git pull
remote: Counting objects: 21, done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 17 (delta 7), reused 9 (delta 0)
Unpacking objects: 100% (17/17), done.
From git@github.com:turian/osqa
* [new branch] master -> origin/master
From git@github.com:turian/osqa
* [new tag] master -> master
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either. Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.
...
$ /usr//lib/git-core/git-svn rebase
warning: refname 'master' is ambiguous.
First, rewinding head to replay your work on top of it...
Applying: Added forum/management/commands/dumpsettings.py
error: Ref refs/heads/master is at 6acd747f95aef6d9bce37f86798a32c14e04b82e but expected a7109d94d813b20c230a029ecd67801e6067a452
fatal: Cannot lock the ref 'refs/heads/master'.
Could not move back to refs/heads/master
rebase refs/remotes/trunk: command returned error: 1

最佳答案

看起来,除了你的 rebase 之外,一切都按预期发生,但比你预期的要多得多。以下是我想在新机器上创建/集成位的方法:

  1. 克隆您的 Svn 存储库。理想情况下,我想从 git 存储库开始,因为它是你的并且处于已知状态,但我不知道有什么方法可以最初从 Svn 中提取内容而不是克隆它。我喜欢在克隆时添加一个 --prefix=svn/,这样我所有来自 Svn 的远程分支都被这样注释。
  2. 添加您的来源(就像您所做的那样)。
  3. 创建本地分支机构进行工作。 git co -b local-branch svn/branchname。现在你有一个不错的地方可以玩东西了。
  4. 确保您在刚刚创建的本地分支上(您应该在)。
  5. 来自 Github。你已经正确地做到了这一点,但模棱两可。要消除歧义,请明确:git pull origin master(从 origin pull 到 master 分支)。
  6. 从 Svn rebase 以同步所有内容。 git svn rebase.

我没试过这个,但这是一个非常典型的工作流程,你遇到的错误似乎与你的两个远程服务(Svn 和 Github)无关。它们似乎更通用一些,并且与您的工作流程以及您调用命令的方式相关。

关于svn - 使用 git-svn 和 github 跟踪上游 svn 变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com