我可以为Git别名使用一组命令(外部和内部)吗?

时间:2015-07-16 06:52:08

标签: git

Git for Windows有a problem写入位于网络上的配置文件。

以下内容可用作错误的解决方法:

mv "//hyprostr/dfs/groups/developers/settings/gitconfig.txt" "./gitconfig.txt"
git config -f "./gitconfig.txt" http.proxy http://@proxy2:8080
mv "./gitconfig.txt" "//hyprostr/dfs/groups/developers/settings/gitconfig.txt"

这不是一个好的解决方案,但它对我有用。

但是我想通过Git别名调用这组命令...注意 - 第一个和最后一个命令是外部的,而第二个命令是内部命令。

我阅读了关于git help config的{​​{1}}部分。阅读后我认为不可能通过别名编写这三个命令。我对吗?我希望我错了,仍然是可能的。如果我弄错了,那该怎么办呢?

UPD(decission)

感谢 @VonC 的回答。我写了这样的剧本:

alias.*

我也在网络中找到的脚本文件。现在它可以直接通过Git Bash启动:

# edit_config.sh
# © Andrey Bushman, 2015
# This is a workaround of the problem described here:
# https://github.com/git-for-windows/git/issues/241
# Arguments:
# $1 - target config file
# $2 - parameter full name
# $3 - parameter value
random_file_name=$RANDOM
mv $1 $random_file_name
git config -f $random_file_name $2 $3
mv $random_file_name $1

或通过别名

sh "//hyprostr/dfs/groups/developers/settings/edit_config.sh" "//hyprostr/dfs/groups/developers/settings/gitconfig.txt" "http.proxy" "http://@proxy2:8080"

我可以发布这个:

git config --global alias.editconfig '!sh "//hyprostr/dfs/groups/developers/settings/edit_config.sh"'

它适用于我。

1 个答案:

答案 0 :(得分:2)

如果无法直接进行,您仍然可以:

  • 编写执行这些命令的shell脚本(sh:甚至在Windows上)
  • 将该脚本添加为git别名。

请参阅“How to embed bash script directly inside a git alias

 git config --global alias.diffall '!sh myscript.sh'

实际上,如果您的脚本被调用git-xxx,您甚至不需要别名:git xxx将起作用(并调用git-xxx脚本文件)。