如何重置Git存储库并重新检查SVN中的源?

时间:2012-03-11 19:31:05

标签: git svn reset rebase revert

我在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"

2 个答案:

答案 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-svn克隆的-stdlayout)。
  • 我建议通过他们的网络用户界面在github上创建一个新的存储库(比如,mybackup)。

命令是:

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