0

我的 git repo 中有一些符号链接,我在两台机器(比如 A 和 B)上工作。两者都运行 Linux,但 B 通过 VirtualBox 运行,并且文件系统是从 Win7 主机系统共享的。因此,B 不支持符号链接。

在做一些关于 BI 的工作时,我意识到在我的情况下使用符号链接是一个坏主意。因此,在 BI 上复制了所有目标,以便它们覆盖“符号链接”。然后我会提交这个,将其推送到我的中央仓库,然后将其拉到 A 上。

问题出在 A 上,其中文件现在具有符号链接的权限,但具有文件的内容。例如,如果原始文件是包含“Lorem ipsum dolor sit amet ...”的文本文件,那么 A 上的符号链接现在将指向无意义的路径“Lorem ipsum dolor sat amet ...”,并且所有文件操作都会失败.

示例(首先,foo.png 是指向 ../bar.png 的符号链接,两者都在 repo 中):

user@B> cat foo.png
../bar.png
user@B> cp ../bar.png ./foo.png
user@B> git add foo.png
user@B> git commit -m "Removed symlink"
user@B> git push

...

user@A> git pull
user@A> ls -l foo.png
lrwxrwxrwx 1 user user 8 2012-06-22 15:13 foo.png -> ?PNG????
user@A> git status foo.png
# 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:   foo.png
#

我想不出任何方法来从文件中删除符号链接标志或作为普通文件进行检出,我希望有人能提供帮助。

4

1 回答 1

1

如果其他人有这个问题,我发现快速而肮脏(且明显)的解决方案是:

  1. 删除 A 上的违规符号链接
  2. 将相应的文件从 B 复制到 A。
  3. 'git add' 文件
  4. 提交并推送

当您暂存要提交的文件时,它们将被标记为

user@A> git status .
# [...]
#     typechange: foo.png
于 2012-06-29T09:04:50.717 回答