【发布时间】:2016-02-15 14:08:42
【问题描述】:
我正在使用 git 进行版本控制的共享项目。我在 Windows 上,而我的伙伴在 Unix 上。
我的伙伴用<file1>.txt 命名了一些文件。当我尝试提取这些文件时,它们不被接受,因为 < 和 > 是 Windows 的无效字符。这很好,我不需要触摸文件。但是,它们被添加到我的提交中作为删除。所以,如果我推送,我会删除这些我不想做的文件。
我无法使用
git reset --hard,因为它为每个“已删除”文件找到了无效路径。有没有办法从我的提交中排除这些文件?我尝试将
<file1>添加到我的.git/info/exclude,但没有成功。
【问题讨论】:
-
这些文件是如何出现在您的提交中的?你是
git commit -a还是git add .?你想编辑你的提交还是只想从索引中删除这些文件? -
我个人要求使用
git mv更改名称,之后您应该能够执行强制拉取,但这是个人喜好。这是一个简单的解决方案,因为它允许您编辑这些文件,而不是无法对它们做任何事情。 -
或者,自己动手:使用 Cygwin 安装程序安装
git包(及其任何所需的依赖项),导航到 Cygwin 终端中的结帐目录(例如cd /cygdrive/c/Users/Nryan6/projects/FooBar),@ 987654321@、git mv \<file1\>.txt file1.txt(对任何其他文件执行相同操作),然后提交和推送。 Cygwin 会将 U+003C (<) 和 U+003E (>) 转换为 Windows 允许的 U+F03C 和 U+F03E,但 Cygwin 会将它们视为正常的<和>字符。 -
有更复杂的方法来解决这个问题,包括在恢复错误提交或硬重置后应用修改后的补丁,但使用
git mv,提交更改并推送更改到遥控器是最简单的。 -
您可以在签入更改时尝试将 gitignore 文件添加到本地项目中。将这些文件添加到您的 .gitignore 文件中。确保您没有将 .gitignore 文件签入到 repo,因为您不希望您的合作伙伴的机器忽略这些文件。参考:help.github.com/articles/ignoring-files