我在SVN上有一个主存储库,我正在与Git / GitHub上的“clone”同步。每次我在SVN上做某事时,都会在我的Git控制台上运行以下命令:
git svn rebase
git push --force git@github.com:.../
在处理此设置时,我经常犯错误(谁知道如何......)。这导致了很多错误和合并,存储,提交,添加,诸如此类,由于我缺乏对Git的了解,我无法解决。所以我想知道,如何在我的Git存储库中恢复所有不需要的更改,以及在SVN中继上提交的方式覆盖所有内容?我只想提交SVN。 Git / GitHub应该只是一个副本。
我发现运行当前问题的解决方法是:
git svn rebase
git add .
git rebase --continue
git push --force git@github.com:.../
这两个额外的步骤允许我继续工作,因为git不会再抱怨了。但我不想保持我奇怪的局部变化。换句话说,是否有这样的命令:
git svn "override and update"
答案 0 :(得分:3)
你说“我只想承诺使用SVN。”所以我认为你应该看看几个月前GitHub的svn-support updated,也支持直接从svn推送。
来自GitHub的代码示例;
$ echo '# Important change' >> branches/wip/README.md
$ svn commit -m 'Made an important change'
Sending branches/wip/README.md
Transmitting file data .
Committed revision 27.
...并且它有效;)通过使用它,您不需要使用git。
答案 1 :(得分:1)
所以看起来你想简单地使用github作为云备份,对吗?
命令是:
$ git reset --hard trunk (clean local tree)
$ git remote add mybackup git@github.com:<username>/mybackup.git (add github remote)
$ git push -u mybackup master (push to github)
示例:
我在目前拥有的git-svn管理的存储库(foo.git-svn)中尝试了以下内容。
$ cd foo.git-svn
$ git reset --hard trunk
$ git svn rebase
$ cd ..
$ mkdir tmp.git && cd tmp.git && git init --bare
$ cd ../foo.git-svn
$ git remote add tmp ../tmp.git
$ git push tmp master
这将我的git-svn repo的主分支推送到一个新的,纯粹的git repo。