我想.zshrc
在我的~/
目录中创建文件的备份,并避免对所有其他项目进行版本控制。如何排除所有子目录及其内容?
例如:
cd ~/subdirectory/ && git status
应该输出:
fatal: Not a git repository (or any parent up to mount point /)
如何实现这一目标?
答案1
这是一个常见的解决方案:
- 在方便的地方创建一个子目录,最好在同一卷上。
- 将您的 .zshrc 和您想要在 git 中跟踪的任何其他 .* 文件移动到该目录中。您可能需要重命名它们以使它们对普通命令可见或避免名称冲突。
- 从新 git-dir 中的文件创建符号链接到您的主目录。
- 在其特定位置管理 git 存储库。
例如:
# Make a git directory someplace to store your config
git init ~/git/dotfiles
# Move your config to the git directory
mv ~/.zshrc ~/git/dotfiles/zshrc
# Link the config's new location into your $HOME
ln -s ~/git/dotfiles/zshrc ~/.zshrc
# Manage your new repo in its specific location
cd ~/git/dotfiles
git add zshrc
git commit -m"Initial commit"
答案2
你无法让它输出
fatal: Not a git repository (or any parent up to mount point /)
但您可以通过添加文件轻松排除所有其他文件.gitignore
,其内容为:
*
!.zshrc
它忽略*
除 之外的所有内容 ( ) .zshrc
。
答案3
执行此操作的一种方法是在您执行的文件夹中使用裸 git 存储库不是调用.git
,但例如, 并在与您在主目录中跟踪的点文件交互时.git-dotfiles
使用。git --git-dir=~/.git-dotfiles --work-tree=~
为了使这更容易,您可以为其定义一个别名。用法可能如下所示:git-dotfiles add .zshrc
例如。
因为 git 通常(没有--git-dir
标志)只查找目录(或文件),所以除非您将其指向它,否则.git
它不会找到您的目录。.git-dotfiles
建议status.showUntrackedFiles
在该存储库中设置为 false,否则它将把主目录中的所有文件列为未跟踪文件。通过该设置,它甚至不应该查看未跟踪的文件,从而保持快速。
Atlassian 发布了好文章更详细地解释了这种方法。