为几个git命令创建别名

时间:2013-05-22 11:37:52

标签: windows git command-line git-bash

我通常在git

的分支'work'上使用这些命令
git commit -a -m "blah! blah!"
git checkout master
git merge work
git checkout work

我听说过git别名。是否可以通过别名或其他方式将所有这些命令组合成一个。

3 个答案:

答案 0 :(得分:0)

除了评论中发布的duplicate question的答案之外,您还可以在git-foo的某处放置一个名为PATH的可执行shell脚本(例如),并使用git foo <args>好像是本机Git命令。

如果您的别名逻辑对于配置文件中的单行来说太长,这可能很有用。

例如:

$ cat > ~/bin/git-foo
#!/bin/bash
echo "Foo: $1"
^C
$ chmod +x ~/bin/git-foo
$ git foo test
Foo: test

答案 1 :(得分:0)

您还可以将以下内容添加到shell.rc文件中:

gmm将所有给定分支与您当前使用的分支合并

调用:gmm branch1-to-merged branch2-to-merged ...

gmm () {
        src=`git branch --no-color | grep "*" | cut -f 2`
        for i in $@
        do
                git checkout $i
                git merge $src
        done
        git checkout $src
}

答案 2 :(得分:0)

正如@ Will-Vousden所建议的,可以编写一个shell脚本来执行此操作。例如:

#!/bin/bash
git commit -a -m "$1"
git checkout master
git merge work
git checkout work

您可以这样称呼:

$ git-commit.sh "Commit message in quotes"

但是,如果存在合并冲突,这种方法(或您自己的别名)很容易失败:

$ git-commit.sh "Commit message in quotes"
[work 1a6e17f] Commit message in quotes
 1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'master'
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
file.txt: needs merge
error: you need to resolve your current index first

将您留在主分支中,但未解决合并冲突。

您可以在脚本中添加一些逻辑来检测 - 并且可能会解决 - 这些问题,但这听起来比运行四个独立命令要多得多的工作和努力!