windows - 神秘的 git 行为

标签 windows git cygwin git-svn

我已经解决了这个问题。但我仍然不知道为什么我所做的有效。

我们有一个用于我们工作代码的 svn 存储库。我有一个本地 git-svn 存储库,因为我 <3 Git。 :) 我们使用 Windows,所以我使用 Cygwin。我认为 Cygwin 的最新版本是 Git 1.7.0.4。星期五,我毫无问题地提交了我的代码,然后回家了。星期一早上我回来,并尝试“git svn rebase”,因为有人在周末提交了代码(成绩优异者)。

开始正常,然后突然断定找不到后备箱。不幸的是,我丢失了确切的错误消息,但它大喊着找不到/refs/remotes/trunk ......我非常害怕。不过幸运的是,我没有未提交的代码。没什么可失去的。尽管如此,之后每次我尝试“git svn rebase”时,它都会永远挂起,然后我会收到以下错误:

Unable to determine upstream SVN information from working tree history

我研究了一整天。我尝试从 https://xxx.xxx.xxx/xxx/xxx 更改 svn-remote url至 https://xxx.xxx.xxx/xxx/xxx / 这看起来很荒谬。然后我做了一个“git svn fetch”……它重新获取了整个主干(所有 1682 次提交)。但是 rebase 仍然不起作用。所以我放弃了这一天,并决定第二天我只创建一个新的存储库并重新开始(这需要一整天)。今天早上,在毫不掩饰地删除我的存储库之前,我去这里问了这个问题。我遇到了这个:

git-svn rebase gone horribly wrong

这不是完全我的问题,但我决定尝试“git reset --hard trunk”,因为这就是我想要的。它奏效了。现在一切都很好。

但是。

为什么它首先要这样做?据我所知,我没有改变任何东西,因为我周末没有上类。什么样的事情会导致该错误?我假设我心不在焉地做了一些糟糕的事情,但我需要知道是什么,所以我不会再这样做了。 :)

提前致谢。

最佳答案

这个错误:

Unable to determine upstream SVN information from working tree history

听起来你当前的 git 历史根本不是基于 svn 历史,因此 rebase 找不到共同的祖先。

通过更改 URL,我认为所有提交都具有略微不同的提交消息,因此会有不同的 sha1 哈希值,因此您的旧祖先与新祖先不匹配,导致 rebase 失败。

至于为什么 trunk 消失/失败,如果没有错误消息,很难理解发生了什么。

关于windows - 神秘的 git 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635227/

相关文章:

windows - 我的代码不足以显示三角形

Git Rebase 期间的 Git Commit - 到底发生了什么?

php - 使用 laravel tinker

makefile - 在 makefile 中将 Cygwin 路径转换为 ​​Windows 路径

c++ - 关于 Cygwin 的一些问题[Windows 中的 Linux](套接字、线程、其他编程和 shell 问题)

windows - 如何自动化此 VB 脚本?

c++ - 父级的 HWND 无效

windows - 如何检查程序是否在本地控制台中运行?

在 Windows 上使用 PuTTY 的 git push 失败(致命的 : The remote end hung up unexpectedly)

git-commit - 如何使用 "git commit -s"命令强制 "git commit"?