我在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)
目前的答案是过时的,需要根据最近的变化进行修订.
给出的解决方案还不够,无法正常工作.
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来清理任何陈旧的管理文件.
那里没有象征性的联系.
git 对单个文件链接有问题,但对目录符号链接(mklink /d )没有问题。因此,将图像文件移动到大项目中的另一个目录,并在 git 存储库中创建指向此目录的目录链接。
参见下面的例子。
P:\denemeler\gitdeneme1>mklink /d linkDirectory P:\puzzles
创建符号链接:linkDirectory <<===>> P:\puzzles
P:\denemeler\gitdeneme1>git status 在分支 master 上未跟踪的文件:(
使用“git add ...”包含在将提交的内容中)Run Code Online (Sandbox Code Playgroud)linkDirectory/没有添加任何内容到提交,但存在未跟踪的文件(使用“git add”来跟踪)
P:\denemeler\gitdeneme1>git add linkDirectory
P:\denemeler\gitdeneme1>git 状态
在分支 master 上要提交的更改:(使用“git reset HEAD ...”取消暂存)
Run Code Online (Sandbox Code Playgroud)new file: linkDirectory/Juggle Fest Question.txt new file: linkDirectory/jugglefest.txt new file: linkDirectory/triangle.txt new file: linkDirectory/triangleQuestion.txtP:\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 ...”包含在将提交的内容中)Run Code Online (Sandbox Code Playgroud)linkDirectory/newFile.txt没有添加任何内容到提交,但存在未跟踪的文件(使用“git add”来跟踪)
| 归档时间: |
|
| 查看次数: |
8073 次 |
| 最近记录: |