基本上我想尝试别名:
git files 9fa3
Run Code Online (Sandbox Code Playgroud)
...执行命令:
git diff --name-status 9fa3^ 9fa3
Run Code Online (Sandbox Code Playgroud)
但是git似乎没有将位置参数传递给alias命令.我试过了:
[alias]
files = "!git diff --name-status $1^ $1"
files = "!git diff --name-status {1}^ {1}"
Run Code Online (Sandbox Code Playgroud)
......以及其他一些但不起作用.
退化的情况是:
$ git echo_reverse_these_params a b c d e
e d c b a
Run Code Online (Sandbox Code Playgroud)
......我怎么能做这个工作?
我使用的go是一个简单的bash别名git checkout branchname.我想念的是自动完成功能,它与完整git checkout branchna...命令一起使用,但不在别名中.
有没有办法指示Bash"继承"另一个命令的自动完成"驱动程序"?
我的zsh选项卡完成有问题:运行后:
autoload -U compinit
compinit
Run Code Online (Sandbox Code Playgroud)
文件的Git选项卡完成不再起作用.例如,如果我输入git add my_f来完成my_file,则没有任何反应.zsh git完成似乎只适用于git分支和标记.
没有compinit的东西,git文件完成工作,但当然我错过了所有花哨的分支完成的东西.
那么......有没有办法在zsh中同时完成git文件的完成和git branch的完成?这对我很有帮助.
是否有办法准确指定git-hook使用时要跳过哪些内容--no-verify?--no-verify或者除了完成此任务之外还有其他标志吗?也许只是一个只能跳过的标志pre-commit?
我有两个经常使用的钩子,pre-commit和commit-msg。pre-commit运行我的 linting、流程检查和一些单元测试。commit-msg将我的分支名称附加到提交消息的末尾。
有时我很想跑,--no-verify但pre-commit还是想跑commit-msg。
似乎有很多与此类似的 SO 帖子,但没有什么比选择性跳过--no-verify.
我正在使用Git和git-completion,一切正常,只有一个例外:当我这样做时
git p some_remote [TAB]
我得到自动完成建议当前目录中的文件(错误).p是一个Git别名:
$ cat ~/.gitconfig
[alias]
p = push
Run Code Online (Sandbox Code Playgroud)
当我做的时候:
git push some_remote [TAB]
Run Code Online (Sandbox Code Playgroud)
我得到了当前存储库中的分支的建议(正确).在这两种情况下,完成some_remote工作正常.
这是什么原因?
我有一个 aliases.sh 文件修改为
alias gc='git checkout'
Run Code Online (Sandbox Code Playgroud)
并且在检查长分支名称时,如果我键入
gc <branchstring>+ TAB ,自动完成功能将不起作用,以便显示完整的分支名称。
我正在尝试用更直观的 watch 命令替换 vlc。
所需的功能
自动完成
观看 /path/to/mo Tab --> 观看 /path/to/movie.avi
执行vlc
watch /path/to/movie.avi Enter# 这应该运行 `vlc /path/to/movie.avi
目前我正在使用上面的别名 todo :
~/.bashrc
...
alias watch='vlc'
...
Run Code Online (Sandbox Code Playgroud)
这符合execute vlc上面的要求,但没有给出正确的autocompletion[1]
目前的行为
$ vlc /path/to/mo Tab--> vlc /path/to/movie.avi (成功完成)
$ watch /path/to/mo Tab--> watch /path/to/mo (不是自动完成..)
正如@GUIDO 提到的,watch是一个内置命令。这在某种程度上影响了自动完成。更改为play有效,但想了解为什么这不起作用以及如何修复..
笔记
但定义函数wrap_alias(在我的~/.bashrc中)并调用
wrap_alias watch vlc ''
Run Code Online (Sandbox Code Playgroud)
没有解决自动完成问题
对于git自己的别名,例如.alias g=git,你会在这里更容易找到答案.
对于git子命令别名,例如.alias gco = "git checkout",看这里.
我git经常打字,所以我把它别名:
alias g='git'
Run Code Online (Sandbox Code Playgroud)
但是,现在我做不到:
g comtab
并完成呈现给我:
g commit
如何重新开始运行?
重复分化
这个平等的第一个元回答建议保持具体案例与一个更通用的问题的链接.我在此编辑中添加了更通用案例的链接.
断言的重复问题更通用 - 但主要是关于git子命令的别名,而不是git本身的别名.
这个问题是关于别名git本身的具体情况.
在标记的副本中,git-itself case仅在第4个显示的答案中回答,并在对第一个列出的答案的评论中回答.第二部分拼图(源/usr/share/bash-completion/completions/git)需要阅读另一条评论才能通过该方法使其工作.
解决以下评论中的链接:
git子命令的问题git别名的更普遍的问题,在这种情况下并不接近最佳解决方案git ×6
bash ×4
autocomplete ×3
alias ×2
command ×1
file ×1
githooks ×1
parameters ×1
position ×1
pre-commit ×1
tabs ×1
zsh ×1