Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要从git svn中取出一些修订_Svn_Git_Git Svn - Fatal编程技术网

我需要从git svn中取出一些修订

我需要从git svn中取出一些修订,svn,git,git-svn,Svn,Git,Git Svn,我们使用svn,我使用git svn来保持理智。有一次,我们的svn服务器决定为某个文件夹返回403。这发生在每个人身上,不仅仅是我 正因为如此,我无法进行git svn再基。我看到这个错误: Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9 rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18

我们使用svn,我使用git svn来保持理智。有一次,我们的svn服务器决定为某个文件夹返回403。这发生在每个人身上,不仅仅是我

正因为如此,我无法进行git svn再基。我看到这个错误:

Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9
rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18
    M   test/system-tests/src/test/java/com/garmin/elevation/ElevationManagerSystemTest.java
    M   test/activity-test/src/test/java/com/garmin/elevation/ElevationManagerIntegrationTest.java
    M   test/activity-test/src/test/java/com/garmin/mb/activity/service/ActivityServiceManagerIntegrationTest.java
    M   system/deployment/src/main/resources/oracle/releases/2.9-SNAPSHOT/110-preference/4-data.dml.sql
    M   pom.xml
service/activity-service-1.2/src/main/java/com/garmin/activity/service/impl/ActivityServiceImpl.java was not found in commit 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 (r8845)
它最后抱怨的文件位于我们出错时返回403的文件夹中。在我的文件系统上,服务/活动服务文件夹不存在。我相信它正在试图修改文件(这就是svn中的更改),但是由于文件不存在,它就爆炸了

所以我认为,如果我能够删除过去的修订,然后重新获取它们,它可能会起作用。我只是不知道该怎么做。我试着以交互方式重定基址,然后删除一组,但没有成功


那么,有人知道如何取消获取已经获取的版本吗?

首先备份.git目录


删除问题分支的
.rev_map.$UUID
文件,位于
.git/svn
下面;并倒带代表问题分支的
git svn
生成的分支(通常为
trunk
)。要回放分支,请运行
git pack refs--all
git log$branch
,在问题提交之前找到提交,然后编辑.git/packed refs,以便分支现在指向较旧的提交。然后运行
git svn fetch
。它将从您现有的、重绕的分支重新构建rev映射,然后获取您尚未提交的svn提交,包括问题提交。您现在应该能够正常地重新设置基础和数据提交。

现在更好的方法是
git svn reset-r
其中rev是您要开始重新蚀刻之前的版本。完成后,只需运行
git svn fetch
,它将重建其索引并在rev后重新提取修订。

git svn reset-r
()很简单,在大多数情况下都有效,除非提交重新获取是分支的第一次提交。即使在那种情况下也有效

这是@Tobu的一个稍微精致的版本。(区别在于可以使用
git update ref
命令编辑ref)

  • 备份您的
    .git
    目录
  • 删除
    .git/svn/refs/remotes/
    目录
  • git-update-ref-refs/remotes//
  • 现在,
    git svn fetch
    将在