标签: git-alias

Git Alias - 多个命令和参数

我正在尝试创建一个使用多个Git命令和位置参数的别名.每个都有Stackoverflow页面,两者都显得非常明显,但我遇到了麻烦.

例如,我想切换到分支foo并执行状态.所以在我看来.gitconfig,我有:

  [alias] 
     chs = !sh -c 'git checkout $0 && git status'
Run Code Online (Sandbox Code Playgroud)

这不起作用.而这样的事情会起作用.

chs = !sh -c 'git checkout $0'

echoes = !sh -c 'echo hi && echo bye'
Run Code Online (Sandbox Code Playgroud)

任何见解将不胜感激.

git alias sh git-alias

170
推荐指数
9
解决办法
6万
查看次数

如何将'git checkout'别名化为'git co'

我希望命令git co与输入相同git checkout.

普通的Bash别名(alias co='checkout')不起作用.

git alias git-alias

133
推荐指数
2
解决办法
3万
查看次数

将参数传递给Git别名命令

我可以将参数传递给Git命令的别名吗?

我在Git配置中有一些别名,如下所示:

rb1 = rebase -i HEAD~1
rb2 = rebase -i HEAD~2
rb3 = rebase -i HEAD~3
rb4 = rebase -i HEAD~4
....
Run Code Online (Sandbox Code Playgroud)

是否可以制作rb别名,以便git rb <x>适用于任何<x>

我试过这个别名:

rb = rebase -i HEAD~
Run Code Online (Sandbox Code Playgroud)

但后来例如git rb 8不起作用.

git git-config git-alias

66
推荐指数
2
解决办法
2万
查看次数

强制推动当前分支

我经常修改功能分支,然后强制将它们推送到服务器.

git push --force origin feature-mongodb-support
Run Code Online (Sandbox Code Playgroud)

有没有捷径git push --force origin <current branch>

git git-push git-alias

42
推荐指数
3
解决办法
5万
查看次数

"爆炸"或"!"是什么意思?在git命令之前?

从这段摘录中可以看出,有一个"!" 在git命令之前.重点是什么?

[alias]
commitx = !git add . && git commit
Run Code Online (Sandbox Code Playgroud)

- /sf/answers/626958251/

我理解别名和命令本身正在做什么,但不是"!"的意思.在git命令之前.

git terminal git-add git-commands git-alias

14
推荐指数
2
解决办法
1464
查看次数

git别名删除本地和远程

我正在尝试编写一个别名来同时删除本地和远程分支,但我无法弄清楚为什么语法不起作用.在~/.gitconfig,我尝试了以下别名,但每个产生相同的结果,这是意外的:

[alias]
     nuke = !sh -c 'git branch -D $1 && git push origin :$1'
Run Code Online (Sandbox Code Playgroud)

[alias]
     nuke = !git branch -D $1 && git push origin :$1
Run Code Online (Sandbox Code Playgroud)

两者都产生:

$> git branch
  * master
  mybranch
$> git nuke mybranch
Everything up-to-date
$> git branch
  * master
  mybranch
Run Code Online (Sandbox Code Playgroud)

切换命令的顺序会产生不同的结果,但也不完全是我正在寻找的:

[alias]
    nuke = !git push origin :$1 && git branch -D $1

...

$> git branch
  * master
  mybranch
$> git nuke mybranch
Everything up-to-date
Deleted branch mybranch (was d719895) …
Run Code Online (Sandbox Code Playgroud)

git shell alias command git-alias

14
推荐指数
1
解决办法
2463
查看次数

别名的 Git 完成就像 Git 本身一样

背景

我已经成功地为各种 Git 别名配置了 Bash 完成。例如:

$ git config alias.subject
!git --no-pager show --quiet --pretty='%s'
$ function _git_subject() { _git_show; }
$ git subject my<TAB>
$ git subject my-branch
Run Code Online (Sandbox Code Playgroud)

挑战

但是,我有一个 Git 别名,我不知道如何为其设置 Bash 完成。问题是我希望别名能够像顶级 Git 命令本身一样完成。别名是这样的:

$ git config alias.alias
alias = !"f() { if [[ \"$#\" != 1 ]]; then >&2 echo \"Usage: git alias COMMAND\"; return 1; fi; git config alias.\"$1\"; }; f"
# Example
$ git alias s
status
Run Code Online (Sandbox Code Playgroud)

我试过使用_git, __git_main, 和__git_wrap__git_main …

git bash bash-completion git-alias

11
推荐指数
1
解决办法
108
查看次数

自定义 git“bang”别名的 Zsh 完成 - Git 分支名称

我有一个 Git 别名update,我想为其配备分支名称完成功能。别名定义如下:

[alias]
        update = "!f() { git push . origin/$1:$1; }; f"
Run Code Online (Sandbox Code Playgroud)

(它使用其上游版本更新本地跟踪分支,而无需检查该分支。不过,对于特定问题并不重要。)

我希望该命令为其$1参数补全现有的分支名称。我知道我可以定义一个调用_git-update来控制完成的函数,但是我缺少一些使其工作的部分:

_git-update ()
{
  ***some-function-here*** "$(__git_branch_names)"
}
Run Code Online (Sandbox Code Playgroud)

我正在使用安装在 OS X 上的完成brew install zsh-completions,这是在https://github.com/zsh-users/zsh-completions设置的。

(这个问题直接类似于/sf/answers/2891556601/,但针对 Zsh 而不是 Bash。)

git zsh tab-completion zsh-completion git-alias

10
推荐指数
1
解决办法
578
查看次数

具有两个命令的Git别名(stash pop + merge)仅执行第一个命令.为什么?如何执行合并?

我设置了这样的git别名:

git config --global alias.popmerge '!git stash pop && git merge master'
Run Code Online (Sandbox Code Playgroud)

然后我叫它,像这样:

git popmerge
Run Code Online (Sandbox Code Playgroud)

执行" git stash pop ",但忽略" git merge master ".

如果我在" git popmerge " 之后运行" git merge master " ...它会按预期运行,执行合并.

我有其他具有长序列命令的别名......它们运行完美无缺.似乎" git stash pop "中的某些内容会使别名进程停止 ...是否有可能避免这种行为?怎么样?

谢谢.

git git-stash git-alias

8
推荐指数
1
解决办法
1753
查看次数

是否可以在 .gitconfig 中编写多行别名?

我知道可以使用&&(and) 语句为同一别名运行多个命令。然而,对于长组合,它会失去可读性。例如:

save = !git status && git add -A && git commit -m \"$1\" && git push --force && git log && :
Run Code Online (Sandbox Code Playgroud)

有没有多行的写法?

{}例如,也许用它包裹它?

git-config git-alias

8
推荐指数
1
解决办法
2823
查看次数