我按照本教程将 SVN 存储库转换为 Git 。现在似乎无法像此答案中建议的那样提取子存储库。
请原谅这篇长篇文章,但大部分文本都是格式良好的 git 输出。
操作系统:Windows 8 命令行:MinGW Git 版本:1.8.1.msysgit.1
除非您有一个干净的暂存区并且没有修改过的文件,否则提取子存储库的过程似乎不起作用。
git status
告诉我我有一个修改过的文件,即使这是一个新的 SVN 导入。好吧,让我们试着摆脱它。
尝试还原文件。
user$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: folder with space/folder/toolbar.png
#
no changes added to commit (use "git add" and/or "git commit -a")
user$ git checkout -- "folder with space/folder/toolbar.png"
user$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: folder with space/folder/toolbar.png
#
no changes added to commit (use "git add" and/or "git commit -a")
这没有用,但我真的不在乎我是否提交它,所以我接下来会尝试。
user$ git commit -a -m "Testing if committing fixes it"
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: folder with space/folder/toolbar.png
#
no changes added to commit (use "git add" and/or "git commit -a")
user$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: folder with space/folder/toolbar.png
#
no changes added to commit (use "git add" and/or "git commit -a")
通过跳过暂存进行提交是行不通的,所以让我们先尝试暂存它。
user$ git add "folder with space/folder/toolbar.png"
user$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: folder with space/folder/toolbar.png
#
no changes added to commit (use "git add" and/or "git commit -a")
不起作用,所以我很难过......去问问更聪明的人。
我是 git 新手,但对 Hg 很熟悉,并且一直在阅读这个在线教程来帮助自己入门。
我完全有可能搞砸了一个简单的命令。
已经尝试过: 我四处寻找解决我的特定问题的方法,但运气不佳。我偶然发现了这个似乎相关但并不能完全解决我的问题的答案。
编辑:可能有趣的事情
这是让我感到困惑的部分。不久前,我已将此 repo 推送到在线存储库中。重新克隆后,repo 仍然认为文件已修改(即git status
返回相同的结果,并且我已经设置git config --global core.autocrlf false
并通过运行git config --global core.autocrlf
确实返回 false 进行验证)。
编辑 2:找到了修复,但问题仍然不明白 我已经设法通过简单地从系统中删除文件、暂存区域然后提交更改来修复存储库。在此之后要取回文件,我只需将其复制回来并将其提交到存储库。
这个问题虽然已经解决,但只会让我更加困惑。
当我在删除文件时,我注意到如果我将存储库重置为 HEAD,其最后一次提交已删除文件, git status 将指示没有任何更改并且文件未被跟踪但文件将被恢复在我的工作树中。考虑到它在 git 中被标记为已删除,这很奇怪......
只有在第二次删除它之后,即使 git 不再记得它,我才设法真正删除它,这样git reset
就git reset --hard
不会恢复文件。
如果有人可以解释我是如何进入这种状态的,如果它是 git 中的错误或正常行为,我将不胜感激。
我的怀疑是
我丢失了我使用的命令序列,但发生的事情是这样的:文件是Images/toolbar.png
,我已经导航到Images
文件夹中。
在我从文件系统中删除它之后,git 检测到了这样的变化:
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: toolbar.png
# deleted: ../images/toolbar.png
#
images
请注意文件夹没有大写的事实!这是在忽略路径大小写的 Windows 中运行的。我怀疑这可能是问题的一部分......
我真的很困惑,但我的问题已经消失了。所以这篇文章只是作为一种好奇心,尽管我无法在某个地方复制它在从 SVN 转换中存在的行为。