kun*_*tko 4 vim git-bare vim-fugitive
我使用git bare存储库来版本化我的配置文件。我可以使用与使用普通git存储库相同的命令,只需包含一些标志:
git --git-dir=/home/kunzaatko/.cfg/ --work-tree=/home/kunzaatko/ __command__
Run Code Online (Sandbox Code Playgroud)
代替
git __command__
Run Code Online (Sandbox Code Playgroud)
我将vim-fugitive与普通git存储库结合使用,主要是为了进行重大更改,并通过部分暂存(仅一组离散的块/更改)并单独提交它们来将其添加到许多不同的提交中。我用:Gdiff它来获得我可以使用的漂亮且高效的界面。
我想用我的配置 git bare 存储库来做到这一点。
将存储库重命名为.cfg.git. 这并没有带来任何改变。表明这应该有效的问题
我尝试更改git-fugitiveb:git_dir的内部变量:
:let b:git_dir=/home/kunzaatko/.cfg/
Run Code Online (Sandbox Code Playgroud)
:chdir /home/kunzaatko/.cfg/
Run Code Online (Sandbox Code Playgroud)
git submodule命令将裸存储库放入范围内。问题在于将git 存储库的根放在哪里......我基于这种可能性的问题有没有办法将git bare存储库与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
Run Code Online (Sandbox Code Playgroud)
对于fish shell的用户(像我一样),应该使用env命令:
env GIT_DIR=$HOME/.cfg GIT_WORK_TREE=$HOME [n]vim
Run Code Online (Sandbox Code Playgroud)
core.worktree为您的 git 存储库设置:env GIT_DIR=$HOME/.cfg GIT_WORK_TREE=$HOME [n]vim
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令确保正确:
git --git-dir=$HOME/.cfg --work-tree=$HOME config --local core.worktree $HOME
Run Code Online (Sandbox Code Playgroud)
输出应该是您的 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 --local core.worktree
Run Code Online (Sandbox Code Playgroud)
对于这个方法还有一件事需要注意。$HOME您不能在会出现错误的目录之外使用逃犯fugitive: working directory does not belong to a Git repository。
PS:我想对@okket的答案发表评论,但由于声誉较低,我只能在这里发布新答案。
| 归档时间: |
|
| 查看次数: |
1954 次 |
| 最近记录: |