即使我在Ubuntu 12.10上安装了git 1.8.3.2,为什么git subtree也不起作用?

Why is the `git subtree` not working even though I have git 1.8.3.2 installed on Ubuntu 12.10?

我将与Yeoman一起将基于AngularJS的静态站点部署为Github Page。部署说明的第3步告诉我做

git subtree push --prefix dist origin gh-pages

但是当我输入时我得到

git: 'subtree' is not a git command. See 'git --help'.

这个SO答案为我提供了有关如何升级到最新git-core并确保始终将其升级到最新稳定版本的说明。

1
2
3
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

运行这些命令后,我做了git --version以确保我具有最新版本,并且显然是因为git version 1.8.3.2是输出,所以我做了。现在,当我尝试运行

git subtree push --prefix dist origin gh-pages

再次出现以下相同错误

git: 'subtree' is not a git command. See 'git --help'.

最后,我刚刚重新启动了Ubuntu 12.10,并尝试再次运行该命令,但再次出现相同的错误。

即使我已升级到当前的稳定发行版,为什么git subtree命令仍然不起作用?


它实际上是安装在Ubuntu上的,但由于某种原因,它没有放在git可以找到它的任何地方。最简单的方法是创建符号链接:

1
2
sudo chmod +x /usr/share/doc/git/contrib/subtree/git-subtree.sh
sudo ln -s /usr/share/doc/git/contrib/subtree/git-subtree.sh /usr/lib/git-core/git-subtree

更新1:看起来已经向上游提交了补丁来解决此问题,但尚未将其合并。

更新2:在Debian中修复此问题的补丁已合并,但是由于他们采用了单独的git-subtree软件包,我认为这不会使其适用于Ubuntu 12.04。在14.04中似乎不是问题,因为git软件包已经正确创建了/usr/lib/git-core/git-subtree


默认软件包似乎未安装它。该站点有一些指示:http://engineeredweb.com/blog/how-to-install-git-subtree


在Fedora上,它是作为单独的软件包提供的:

dnf install git-subtree