1

我通常使用 git 在分支“工作”上使用这些命令

git commit -a -m "blah! blah!"
git checkout master
git merge work
git checkout work

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

4

3 回答 3

0

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

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

例如:

$ cat > ~/bin/git-foo
#!/bin/bash
echo "Foo: $1"
^C
$ chmod +x ~/bin/git-foo
$ git foo test
Foo: test
于 2013-05-22T11:42:51.233 回答
0

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

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

调用:gmm branch1-to-be-merged branch2-to-be-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
}
于 2013-05-22T11:52:56.997 回答
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

将您留在 master 分支中,并存在未解决的合并冲突。

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

于 2013-05-22T12:27:16.863 回答