Git和Svn-dcommit破坏了我的代码

时间:2018-09-27 15:57:00

标签: git svn

我试图将我的git repo提交到一个Subversion系统上,出了点问题。这里详细介绍了我到目前为止所做的事情:

  1. 从对svn的提交开始,我启动了以下命令: $git svn clone my_repo_url -s
  2. 处理我的代码(所以我做了我的东西);
  3. 一切正常的时候,我重新调整了一切。自从我读到svn在分支机构后效果不佳;
  4. 因此,通过一个分支(主服务器),我运行了以下命令:git svn dcommit
  5. 推送到svn服务器失败(可能有一些冲突需要解决)。当时我不想解决这些问题,所以我启动了以下命令:git rebase --abort(也许我不太清楚它的功能,但是git建议这样做);
  6. 现在我已经丢失了解决方案(.sln文件),在一个项目上,我可以看到一个名为“ Backup”的文件夹(重复了所有的类)... wtf

一个简单的问题是:发生了什么事?如何在恢复到“ git svn dcommit”之前恢复我的解决方案?

这是我的.git / logs / HEAD的输出:

5edc59acb6e200aef991d7de124008f8120ee187 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538033064 +0200      commit: Change the Map table label
1234c77ff6a21551ea615bee11cd9c56f2beb839 0d80fd2165866dd809dbdf16287898a71d31fecb my_name my_email 1538059453 +0000      rebase: checkout refs/remotes/git-svn
0d80fd2165866dd809dbdf16287898a71d31fecb 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538059583 +0200      rebase: aborting
1234c77ff6a21551ea615bee11cd9c56f2beb839 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538059584 +0200      rebase: updating HEAD
1234c77ff6a21551ea615bee11cd9c56f2beb839 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538059671 +0200      checkout: moving from master to TestMergeSvn_feature
1234c77ff6a21551ea615bee11cd9c56f2beb839 14687b653cd9b13bba47a971af002f95bfac3bf6 my_name my_email 1538059705 +0000      rebase: checkout refs/remotes/git-svn
14687b653cd9b13bba47a971af002f95bfac3bf6 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538060096 +0200      rebase: aborting
1234c77ff6a21551ea615bee11cd9c56f2beb839 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538060097 +0200      rebase: updating HEAD
1234c77ff6a21551ea615bee11cd9c56f2beb839 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538060179 +0200      checkout: moving from TestMergeSvn_feature to master
1234c77ff6a21551ea615bee11cd9c56f2beb839 5edc59acb6e200aef991d7de124008f8120ee187 my_name my_email 1538060222 +0200      checkout: moving from master to 5edc59a
5edc59acb6e200aef991d7de124008f8120ee187 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538060314 +0200      checkout: moving from 5edc59acb6e200aef991d7de124008f8120ee187 to master
1234c77ff6a21551ea615bee11cd9c56f2beb839 e009e033a3b1811e01c08f28a0a6cc2fa71fd566 my_name my_email 1538060866 +0200      checkout: moving from master to e009e03
e009e033a3b1811e01c08f28a0a6cc2fa71fd566 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538061011 +0200      checkout: moving from e009e033a3b1811e01c08f28a0a6cc2fa71fd566 to master
1234c77ff6a21551ea615bee11cd9c56f2beb839 1234c77ff6a21551ea615bee11cd9c56f2beb839 my_name my_email 1538061307 +0200      reset: moving to 1234c77

谢谢。

1 个答案:

答案 0 :(得分:0)

可能还有一些其他的步骤我可能会忘记,但是...这就是我要做的:git rebase --abort(如果您位于基准站的中间)。确保您使用的是您在工作中首次创建的修订版本(不要担心,如果已提交,则不会轻易丢失它)。如果不是,请返回它(检查git reflog,以防万一)。现在,执行git svn fetch以从svn收集所有您没有的更改。然后将要重新推送的svn分支更改为基值或进行选择。然后运行git svn dcommit

相关问题