我使用 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
感谢您的帮助。
最佳答案
这是我如何实现我想要的:
- 在新的 git-svn 仓库中重新克隆
http://tracked-svn/trunk
。 - 将我的旧 git-svn 存储库添加为新存储库的远程。 (例如
git remote add -f up-to-date/path/to/repo
) git merge remotes/up-to-date/master
git svn dcommit
基于我的旧存储库没有错误,并且 dcommit 按预期工作。
这可能不是恢复提交的最佳方式,但它让我得到了我想要的。
关于svn - 我可以使用本地跟踪 git-svn 分支恢复 SVN 存储库中丢失的提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2710073/