git-pull:无法分离HEAD的Unicode文件名

时间:2012-04-17 22:15:35

标签: git unicode osx-leopard

我运行这个git pull命令,它在Unicode文件名

上窒息
& git pull
From . 
  * branch            master     -> FETCH_HEAD
First, rewinding head to replay your work on top of it...
error: The following untracked working tree files would be overwritten by checkout:
    test-sample-files/MByte/CJK-UTF8-MultiByte/樣品套裝/サンプル.java
    test-sample-files/MByte/CJK-UTF8-MultiByte/樣品套裝/의 견본을 뽑다.java
    test-sample-files/MByte/japanese/これはサンプルのテストであり、できるだけ早く修正する必要があります.java
    test-sample-files/MByte/japanese/サンプル.java
    test-sample-files/MByte/korean/의 견본을 뽑다.java
Please move or remove them before you can switch branches.
Aborting
could not detach HEAD

然而git状态报告工作目录干净

$ git status
# On branch dev/experimental
# Your branch and 'master' have diverged,
# and have 3 and 96 different commit(s) each, respectively.
#
nothing to commit (working directory clean)

没有“git add”,或“git reset”或“rm ... *”确实解决了这种情况。非常感谢任何帮助。

P.S。:我在Mac OS X Leopard(10.5)上运行“git version 1.7.5.4”,这是我能为豹子找到的最新预编译。

2 个答案:

答案 0 :(得分:2)

您的文件在工作树的当前状态下未跟踪。这就是git addgit rm没有做任何事情的原因。

git stash save --untracked存储它们,它们将被保存在藏匿处。拉后你可以使用git stash pop进行恢复,但是你可能会有冲突,因为pull会检查主题是否有可能的不同内容。

由于你坚持使用Git 1.7.5 stash不知道--untracked选项,所以你可以

  • 将未跟踪的文件移至临时目录,并将其恢复:

     git ls-files --other --exclude-standard | xargs -t -I file  mv file untracked
    
  • 或者使用git add -u添加它们,并提交

答案 1 :(得分:2)

原因已在堆栈溢出和workaround to handle Mac OS X UTF-8 encoded file names with git中描述!也有描述。