繁体   English   中英

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

[英]How to reset a Git repository and check out sources from SVN afresh?

我在SVN上有一个主存储库,我正在与Git / GitHub上的“克隆”同步。 每次我在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"

你说“我只想承诺SVN。” 所以我认为你应该看一下几个月前更新的 GitHub的svn-support ,也支持直接从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。

所以看起来你想简单地使用github作为云备份,对吧?

  • 清理你的本地仓库以摆脱你所做的错误更改(我假设--stdlayout用于git-svn克隆)。
  • 我建议通过他们的web UI在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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM