我使用git 裸存储库来版本我的配置文件。我可以使用与使用普通git存储库相同的命令,只需包含一些标志:
git --git-dir=/home/kunzaatko/.cfg/ --work-tree=/home/kunzaatko/ __command__
代替
git __command__
我将vim-fugitive与普通git存储库一起使用,主要是为了进行重大更改,并通过部分暂存(仅一组离散的大块/更改)并分别提交它们来将其添加到许多不同的提交中。我将其:Gdiff
用于我可以使用的漂亮且高效的界面。
我想用我的配置 git 裸存储库来做到这一点。
将存储库重命名为.cfg.git
. 这没有任何改变。表明这应该有效的问题
我试图改变git-fugitive的b:git_dir
内部变量:
:let b:git_dir=/home/kunzaatko/.cfg/
:chdir /home/kunzaatko/.cfg/
git submodule
命令将裸仓库纳入范围。问题在于将git 存储库的根放在何处......我基于这种可能性的问题有没有办法将git 裸仓库与git-fugitive 一起使用?
(或任何其他可以解决我的用例的建议)
我同意@okket,但使用该方法时出现问题。
在 Gstatus 窗口中,我无法获取已更改文件的状态。我发现原因是逃犯core.worktree
从GIT_DIR
存储库中获取属性。
所以对我来说,可行的方法如下:
GIT_DIR
在使用 vim/nvim 命令时设置env 变量(GIT_WORK_TREE
可以省略):GIT_DIR=$HOME/.cfg GIT_WORK_TREE=$HOME [n]vim
对于fish shell的用户(像我一样),应该使用env
命令:
env GIT_DIR=$HOME/.cfg GIT_WORK_TREE=$HOME [n]vim
core.worktree
为您的 git 存储库设置:git --git-dir=$HOME/.cfg --work-tree=$HOME config --local core.worktree $HOME
您可以使用以下命令确保正确操作:
git --git-dir=$HOME/.cfg --work-tree=$HOME config --local core.worktree
输出应该是您的 HOME 路径。
git clone --bare ...
,则需要取消设置core.bare
以避免 git status 错误warning: core.bare and core.worktree do not make sense
:git --git-dir=$HOME/.cfg --work-tree=$HOME config --unset core.bare
这种方法还有一件事需要注意。您不能$HOME
在会fugitive: working directory does not belong to a Git repository
出错的目录之外使用逃犯。
PS:我想评论@okket 的答案,但由于声誉低,我只能在这里发布新答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句