2017-09-15 42 views
0

我曾经有一个部分工作版本的git自动完成从https://github.com/git/git/tree/master/contrib/completion。我一直在搞乱,现在已经完全破碎了。重置git自动完成缓存?

最初的自动完成可以完成所有的git命令和分支;但是,它不会显示我的任何别名。我试图通过摆弄很多东西来解决这个问题。我结束了然后打破它,所以它不会自动完成别名或分支(git checkout <TAB><TAB>只有当有大量分支时才显示HEAD)。然后我真的打破了它...

什么可能已经打破它是我相信我跑__git_complete map git_map其中map是我在我的gitconfig文件中做的git别名。现在,当我尝试做一个git自动完成时,它只显示下面显示的一个奇怪的选项列表。这些是一些命令,例如rebase,我在我的系统中使用的别名以及像s(系统)和map(全局)这样的全局文件,以及其他我不完全确定的内容。


git <TAB> <TAB>

a      cm     master 
aa     d      mergetool 
ac     filter-branch   p4 
acm     gui     rebase 
addnw     imap-send    request-pull 
alias     instaweb    s 
au     l      send-email 
bisect    lg     spull 
c      ll     spush 
ca     llg     stash 
citool    map     submodule 
clang-format-mp-3.8 mapall    subtree 
clang-format-mp-3.9 mapblame    svn 

有没有办法只是重置所有自动完成选项。重新启动我的系统,重新下载完成脚本都没有做任何事情。看起来这个工具仍然有效,但是我已经打破了它自己可用的命令。如果有某种可以为自动完成工具重置的缓存,我会有足够的内容恢复到原始状态。

我在OSX 10.10.5,GNU bash版本3.2.57(1)-release(x86_64-apple-darwin14),git版本2.14.1。


编辑:我认为我是真的flubbed东西是__git_complete git __git_main

回答

0

我相信我有一个路径问题,与Xcode命令行工具一起提供的git被用于某些选项,官方的git版本正在其他地方使用。我完全忘了是什么,但苹果发布的git缺乏功能,而我在2.14.1版本中用官方版本取代了它。

我最终从官方github回购和大楼下载了最新的git版本(git版本2.14.1.536.g6867272d5)。我认为这个版本的git必须使用他们的自动完成脚本正常工作(也许苹果版本失败)。然后我更新了我的路径,以便通过使其成为/etc/paths中的第一行来使“〜/ bin”(默认情况下从make文件安装git)先行。

现在我的git autocomplete正确地查找命令,分支和别名。我知道在其他切线相关的问题中找到了一些解决方案,但是我不认为这是必要的。

一个奇怪的题外话:我也没有做一个系统gitconfig(/User/NAME/etc/.gitconfig)文件(其中有我的别名是不熟悉出现在该列表上面的回忆像asaa,等现在,我redid它已经消失的一切。