svn - 我可以使用本地跟踪 git-svn 分支恢复 SVN 存储库中丢失的提交吗?

标签 svn git git-svn

我使用 git-svn 跟踪的一个 SVN 存储库最近损坏了,备份已恢复。然而,一周的提交值(value)在恢复过程中丢失了。是否可以在我的本地 git 存储库上使用 git-svn dcommit 恢复那些丢失的提交?使用 SVN 中最后恢复提交的 SHA1 运行 git-svn dcommit 是否足够?例如。

> svn info http://tracked-svn/trunk | sed -n "s/Revision: //p"
252
> git log --grep="git-svn-id:.*@252" --format=oneline | cut -f1 -d" "
55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
> git svn dcommit 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a

或者 git-svn-id 是否需要从预期的提交中删除?

我尝试使用 --dry-run 但无法判断它是否会尝试提交所有提交:

> git svn dcommit --verbose --dry-run 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
Committing to http://tracked-svn/trunk ...
dcommitted on a detached HEAD because you gave a revision argument.
The rewritten commit is: 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a

感谢您的帮助。

最佳答案

这是我如何实现我想要的:

  1. 在新的 git-svn 仓库中重新克隆 http://tracked-svn/trunk
  2. 将我的旧 git-svn 存储库添加为新存储库的远程。 (例如 git remote add -f up-to-date/path/to/repo)
  3. git merge remotes/up-to-date/master
  4. git svn dcommit

基于我的旧存储库没有错误,并且 dcommit 按预期工作。

这可能不是恢复提交的最佳方式,但它让我得到了我想要的。

关于svn - 我可以使用本地跟踪 git-svn 分支恢复 SVN 存储库中丢失的提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2710073/

相关文章:

c++ - 使用 iOS 或 c/c++ 访问 SVN 或远程 Git 存储库等

svn - 在SVN结帐中跳过目录? (部分结帐)

git - GitHub 上 pull request 中的分支名称

git-svn 克隆或 svn2git 意外停止

svn - Subversion 和 MKS 的区别

linux - 如何在 makefile 中指定将结果发送到哪里

git - 修改对共享仓库的 Git 提交

linux - 为什么git创建权限错误的文件?

svn - 如何将历史记录添加到Git存储库?

git - 如何在一个工作目录中使用两个 SVN 项目和相应的 git-svn 分支?