git windows将symlink文件添加为文件

12 windows git symlink

我在git中有大(更多1000个文件)VS C#项目.我需要创建小型演示项目并使用大项目中的10个文件.我用项目创建新的解决方案,并使用mklink(符号链接)从大到小添加10个文件.文件中的所有更改都在大项目和小项目中.现在我需要将小项目添加到不同的(自己的)git repo.

但是symlink没有添加git

(错误:readlink("X.cs"):函数未实现)

如何在git中添加X.cs(symlink)文件作为通常的文件?

我需要X.cs中的所有更改(在大项目中)移动到X.cs(小项目).

小智 15

如果将索引链接添加到索引不能处理错误error: readlink("..."): Function not implemented,请尝试在本地或全局配置中查找:

[core]
    symlinks = false
Run Code Online (Sandbox Code Playgroud)

并需要设置symlinks = true以纠正推动.如果参数不存在不正常,则默认值(= true)取决于创建存储库的设置.

硬链接不能与GIT,文件和硬链接一起存储为单独的文件.

它与git 2.8或更高版本的工作方式相同(我不检查版本少于2.8)

  • 你可以简单地使用命令 `git config core.symlinks true` (2认同)

Von*_*onC 7

目前的答案是过时的,需要根据最近的变化进行修订.
给出的解决方案还不够,无法正常工作.

Windows上最新的Git 2.12仍存在问题(2017年2月,OP提问后18个月)

在处理git-new-workdir2015 年所谓的(能力,形成一个克隆,拥有多个工作树:最终被调用git worktree)的背景下,Git开发人员正在询问如何从主克隆仓库引用这些工作树.
他们会用ln吗?或它的Windows等效mklink

当时,这个主题强调了这些问题:

在MinGW中运行Windows时,通过ln始终失败创建符号链接.
使用mklink而不是ln在Windows上创建链接的推荐方法

这可能是真的,但并不理想:" Git Bash Shell无法创建符号链接 "确实提到:

对于我的设置,在Windows 8.1 export MSYS=winsymlinks:nativestrict上安装的Git for Windows 2.11.0可以解决这里所解释的问题:git-for-windows/pull/156

以管理员身份启动Git Bash shell非常重要,只有管理员才能创建符号链接.因此,为了完成tar -xf工作并创建所需的符号链接:

  • 以管理员身份运行Git Bash shell
  • export MSYS=winsymlinks:nativestrict
  • tar

另请参阅" Windows中的Git符号链接",其中立即安装(适用于Windows 2.10+的Git)包括符号链接支持:

符号链接

您需要在克隆期间指定:

git clone -c core.symlinks=true <URL> 
Run Code Online (Sandbox Code Playgroud)

您的CMD会话需要以管理员身份运行.

毋庸置疑,对Windows用户施加先决条件是不行的(企业中的Windows通常具有有限的权限或没有权限提升)

然而,PR 156确实代表了对Gml For Windows 2.10(2016年9月)发布的符号链接的一些Windows支持.


它告诉我们git worktree最终实现了多个工作树参考...... 依赖于符号链接,并使借方和借方意识到彼此.

完成链接的工作树后,您只需删除它即可.存储库中的工作树管理文件最终将自动删除(请参阅git config中的gc.pruneworktreesexpire),或者您可以在主要或任何链接的工作树中运行git worktree prune来清理任何陈旧的管理文件.

那里没有象征性的联系.


Ati*_*gur 0

git 对单个文件链接有问题,但对目录符号链接(mklink /d )没有问题。因此,将图像文件移动到大项目中的另一个目录,并在 git 存储库中创建指向此目录的目录链接。

参见下面的例子。

P:\denemeler\gitdeneme1>mklink /d linkDirectory P:\puzzles

创建符号链接:linkDirectory <<===>> P:\puzzles

P:\denemeler\gitdeneme1>git status 在分支 master 上未跟踪的文件:(
使用“git add ...”包含在将提交的内容中)

    linkDirectory/
Run Code Online (Sandbox Code Playgroud)

没有添加任何内容到提交,但存在未跟踪的文件(使用“git add”来跟踪)

P:\denemeler\gitdeneme1>git add linkDirectory

P:\denemeler\gitdeneme1>git 状态

在分支 master 上要提交的更改:(使用“git reset HEAD ...”取消暂存)

    new file:   linkDirectory/Juggle Fest Question.txt
    new file:   linkDirectory/jugglefest.txt
    new file:   linkDirectory/triangle.txt
    new file:   linkDirectory/triangleQuestion.txt
Run Code Online (Sandbox Code Playgroud)

P:\denemeler\gitdeneme1>git commit -m "新文件"

[master 0c7d126] 新文件 4 个文件已更改,14150 个插入(+) 创建模式 100644 linkDirectory/Juggle Fest Question.txt 创建模式 100644 linkDirectory/jugglefest.txt 创建模式 100644 linkDirectory/triangle.txt 创建模式 100644 linkDirectory/triangleQuestion.txt

P:\denemeler\gitdeneme1>echo "aa" > p:\puzzles\newFile.txt

P:\denemeler\gitdeneme1>git 状态

在分支主控未跟踪文件上:(
使用“git add ...”包含在将提交的内容中)

    linkDirectory/newFile.txt
Run Code Online (Sandbox Code Playgroud)

没有添加任何内容到提交,但存在未跟踪的文件(使用“git add”来跟踪)

  • &gt;&gt;C:\xampp\Test\files\scss&gt;git add linkDirectory&lt;&lt; 之后,我收到错误:```C:\xampp\Test\files\scss&gt;git add linkDirectory 错误:readlink("files/scss /linkDirectory"): 功能未实现错误: 无法索引文件 files/scss/linkDirectory 致命: 添加文件失败``` (6认同)
  • 这个答案不正确,我仍然遇到同样的错误。 (3认同)