我正在尝试设置别名,因为我有很多。
出于某种原因,这是行不通的。任何的想法?
[alias]
t = "!git log --decorate --oneline | egrep '^[0-9a-f]+ \(tag: ' | sed -r 's/^.+tag: ([^ ]+)[,\)].+$/\1/g'"
Run Code Online (Sandbox Code Playgroud)
命令本身可以正常工作:
$ git log --decorate --oneline | egrep '^[0-9a-f]+ \(tag: ' | sed -r 's/^.+tag: ([^ ]+)[,\)].+$/\1/g'
1.0.0
0.9.0
...
$ git t
fatal: bad config file line 28 in /Users/alanschneider/.gitconfig
Run Code Online (Sandbox Code Playgroud) 好吧,我尝试了无数种变化:
git config --global alias.gg '!gitk --all &; git gui &'
Run Code Online (Sandbox Code Playgroud)
但它们不起作用或者只显示 gitk,如下所示:
[alias]
gg = !gitk --all& ; git gui&
Run Code Online (Sandbox Code Playgroud) 当我想在已有上游分支的分支上推送更改时,这git push就是我所需要的。但是当当前没有上游分支时,我必须输入git push -u $BRANCH_NAME.
我一直在创建新分支(对于我处理的每一项功能,所以大约每两个小时左右创建一个)。我有时也会犯错别字。它变得令人恼火。如何创建一个会自动解析为git push或git push -u $BRANCH_NAME且不需要我输入分支名称的别名?
Git 别名可以使用git config --global --unset alias.<badalias>.
我想让生活变得更轻松,并能够使用以下命令删除 git 别名
git rmalias <badalias>:
我对这个别名的尝试是:
git config --global alias.rmalias '!git config --global --unset alias.'
Run Code Online (Sandbox Code Playgroud)
我在这里遇到的问题是
error: key does not contain variable name: alias.
Run Code Online (Sandbox Code Playgroud)
因为命令现在显示为
git config --global --unset alias. badalias.
如何定义别名以便将额外的参数放在正确的位置?
当通过Git别名运行外部命令时,它将从存储库的rood目录运行(.git /通常位于该目录中).可以通过以下方式检查:
$ cd /some/path/inside/repo
$ echo $(git -c alias.root='!pwd' root)
Run Code Online (Sandbox Code Playgroud)
现在,有没有办法获得别名运行的确切路径?`
在XY问题的情况下,这就是我正在做的事情:我想要一个启动shell函数的别名,它反过来运行几个Git命令,比如ls-files.它应该只在它被调用的路径中工作,所以它应该知道它.
如果我只是运行该函数,它运行良好,因为它不会更改路径并在其调用的位置运行.但我想要更多的原生行为.我现在拥有的是什么
git-add-specificname -opt -opt2 --long-option -- path1 path2
Run Code Online (Sandbox Code Playgroud)
我想要的是
git add-specificname -opt -opt2 --long-option -- path1 path2
Run Code Online (Sandbox Code Playgroud)
不允许在Git中使用别名参数,因此没有机会 git add specificname...
我在Windows下使用git bash,我想制作一个git alias命令,其概念上是这样的:
[alias]
assume_unchanged_below = "!git ls-files -z $dir | xargs -0 git update-index --assume-unchanged"
Run Code Online (Sandbox Code Playgroud)
其中$dir扩展到git assume_unchanged_below执行的bash shell中的当前工作目录.
即如果我进入C:\somedir\somesubdir并执行,git assume_unchanged_below我会希望它就像我打字一样git ls-files -z C:\somedir\somesubdir | xargs -0 git update-index --assume-unchanged
似乎可以通过获取当前目录git rev-parse --show-prefix.我也知道可以使用匿名函数传递参数,但我无法将这两个概念结合起来以获得我想要的行为.
例如,如果我这样做:
[alias]
assume_unchanged_below = "!f() { \
git ls-files -z $1 | xargs -0 git update-index --assume-unchanged; \
}; f"
Run Code Online (Sandbox Code Playgroud)
然后我可以输入
git assume_unchanged_below `git rev-parse --show-prefix`
Run Code Online (Sandbox Code Playgroud)
它的行为与预期一致($1正确扩展到当前工作目录).
但是,我不想手动传递git rev-parse --show-prefix给别名,我希望它自动推断,这样我只需要输入
git assume_unchanged_below …Run Code Online (Sandbox Code Playgroud) 因此,我尝试将更改从本地分支推送到具有相同名称的远程分支。我正在尝试做这样的事情。
git push origin "git rev-parse --abbrev-ref HEAD"
Run Code Online (Sandbox Code Playgroud)
引号内的命令返回当前签出分支的名称。我不确定这是否可能。
本质上,我正在构建一个可以为我添加、提交和推送的别名,它看起来像这样:
git config --global alias.fire '!f() {
git add -A && git commit -m "$1" && git push origin "git rev-parse --abbrev-ref HEAD";
}; f'
Run Code Online (Sandbox Code Playgroud)
现在,我只是试图获取当前签出的分支的名称并在另一个命令中使用它。有人有任何建议或不同的方法吗?谢谢
编辑:我正在使用Windows
我想为以下项目编写一个 git 别名:
git log --all --grep='Big boi'
Run Code Online (Sandbox Code Playgroud)
到目前为止我所拥有的是:
[alias]
search = "!f() { str=${@}; echo $str; git log --all --grep=$str; }; f"
Run Code Online (Sandbox Code Playgroud)
这与字符串完美匹配,但给出了错误,我似乎无法弄清楚如何将字符串传递给 grep 标志。
$ user in ~/src/repo on master ? git search 'Big boi'
Big boi
fatal: ambiguous argument 'boi': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Run Code Online (Sandbox Code Playgroud)
如果有任何不同,我正在使用 zsh 。. .
这是一个演示我的问题的简单示例.如果我做:
git commit -m "`date --utc`"
Run Code Online (Sandbox Code Playgroud)
它执行date --utc,并将结果放在提交消息中.
但是,当我将它别名为testcomit时:
git config --global alias.testcommit 'commit -m "`date --utc`"'
Run Code Online (Sandbox Code Playgroud)
执行git testcommit不执行该`date --utc`部分,而是将其逐字地放在提交消息中.
那么,如何让这个别名执行date --utc?
在我的.gitconfig中,我有以下别名:
c = add -A && git commit -m
Run Code Online (Sandbox Code Playgroud)
我们的想法是添加所有更改并提交它们.但是,我没有成功,因为Git给了我这个消息error: unknown switch 'm'.
现在我使用ubntu 17.10。
例如如何更改 git 命令
git add .命令如ga,git commit命令就像gcgit push科曼斯·利杰·gp其他示例,例如 $ git add 命令,例如 $ ga
当我输入 ga 时,它就像 git add 一样工作