我试图创建以下git别名:
stat = "!stat() { echo -n Number of revisions:; git log --oneline | wc -l;}; stat"
但输出错误:
> git stat
-n Number of revisions:
5917
我想要的输出是:
> git stat
Number of revisions: 5917
-n选项不起作用是否正常? 它虽然在命令行上。
我使用的是git 2.5.0版。
答案 0 :(得分:2)
确定。我找到了它!
默认情况下,git别名似乎使用sh而不是bash。
在我的操作系统上,sh不支持-n,但bash确实支持。 所以诀窍是告诉git使用bash而不是sh。 (http://blogs.atlassian.com/2014/10/advanced-git-aliases/)
使用bash的-c选项,我可以获得所需的输出。 这是我现在的工作别名:
stat = "!/bin/bash -c 'stat() { echo -n Number of revisions:; git log --oneline | wc -l;}; stat'"
答案 1 :(得分:1)
您的shell可能没有支持JFrame frame = new JFrame("Title for your window");
JPanel panel = new JPanel();
JLabel label = new JLabel("Your text here");
panel.add(label);
frame.add(panel);
frame.setVisible(true);
标记的echo
。
但是你实际上并不需要-n
标志,你可以只回显一行并在那里插入结果:
-n
如this question中所述,您还可以使用stat = "!echo Number of revisions: $(git log --oneline | wc -l)"
计算修订数量。别名就是这样:
git rev-list HEAD --count
答案 2 :(得分:0)
更快:
stat = "!echo Number of revisions: $(git rev-list --count HEAD)"
这可以避免日志必须提取有关每个提交的信息,让git对提交进行计数,并避免不得不使用字数。 rev-list
也有一个整洁的版本范围功能:
另一种特殊符号是" ..."这对合并很有用。生成的提交集是两个操作数之间的对称差异。以下两个命令是等效的:
$ git rev-list A B --not $(git merge-base --all A B)
$ git rev-list A...B
rev-list是一个非常重要的Git命令,因为它提供了构建和遍历提交祖先图的能力。
这可用于更新别名,以便在分叉或合并时为特定分支提供修订。