我想结帐到其他分支,或以前的提交,但我想保持一个文件夹相同的文件(不签出文件夹).
我希望该文件夹将显示在git status,所以我现在可以将此文件夹添加到索引中.
例如,我有一个文件夹node_modules.我希望文件夹在我的所有提交中(我知道大多数人更喜欢.gitignore node_modules文件夹).但是当我转移到其他提交或检查其他分支时,我希望它git不会触及该node_modules文件夹.
可能吗?
Enr*_*lio 25
您可以使用稀疏结帐node_modules从工作树中排除目录的已提交内容.正如文件所说:
"稀疏结账"允许稀疏地填充工作目录.它使用该
skip-worktree位告诉Git工作目录中的文件是否值得查看.
这是你如何使用它.首先,启用该sparseCheckout选项:
git config core.sparseCheckout true
Run Code Online (Sandbox Code Playgroud)
然后,在文件中将node_modules路径添加为否定.git/info/sparse-checkout:
echo -e "/*\n!node_modules" >> .git/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为sparse-checkoutcontains 的文件:
/*
!node_modules
Run Code Online (Sandbox Code Playgroud)
这实际上意味着在将提交的树读入工作目录时忽略该 node_modules 目录.
如果您以后想要node_modules再次包含该目录(即从其文件中删除该skip-worktree位),则必须将该sparse-checkout文件修改为仅包含/*- 即"包括所有路径" - 并使用git read-tree以下命令更新您的工作目录:
echo "/*" > .git/info/sparse-checkout
git read-tree -mu HEAD
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过将其配置变量设置为以下来完全禁用稀疏检出false:
git config core.sparseCheckout false
Run Code Online (Sandbox Code Playgroud)
请注意,稀疏结账最初是在Git 1.7.0中引入的.