我正在尝试使用git submodule
git 但正在运行
$ git submodule update --init --recursive
我明白了
git: 'submodule' is not a git command. See 'git --help'.
除了这个问题之外,我在网上找不到解决方案错误:英特尔爱迪生和 git 2.0.1 上的“git:'子模块'不是 git 命令”,这在我的情况下不起作用。
早些时候,我从apt-get
方法中安装了 git。我遇到了这个问题。现在,我已经从源代码构建了 Git,如此处所述,但我跳过了这一部分
为了能够添加各种格式的文档(doc、html、info),需要这些额外的依赖项:
$ sudo dnf install asciidoc xmlto docbook2X
$ sudo apt-get install asciidoc xmlto docbook2x
因为我不需要它。我应该如何克服它?
运行
sudo apt update
,然后从 Ubuntu 的存储库sudo apt install git
安装。git
这个版本git
有一个工作submodule
命令。我建议git
以这种方式安装,除非您有特定的理由不这样做。尽管您应该能够以有效
git
的方式从源代码构建git submodule
,但对于大多数人来说,在 Ubuntu 上安装的最佳方式git
是为其安装 Ubuntu 软件包。该包被简单地称为git
. 它支持submodule
命令。另外,请尝试找出
git
可能困扰您的客户。运行type git
找到它。然后删除此版本并重新安装git
。要安装
git
软件包,请运行:git submodule
git
在以这种方式安装的 18.04 LTS 系统上为我工作。(还有一个
git-all
软件包,它安装了额外的工具和服务。这些说明建议这样做,但我认为大多数用户不需要任何超出git
软件包提供的东西。安装它不会有任何伤害,但如果你只是安装git
你仍然可以git-all
稍后安装。我刚刚测试的 18.04 LTS 系统git submodule
没有安装git-all
包,或者它的大部分依赖项。)当一个新安装的程序版本应该提供新的行为,但出乎意料的行为与您以前的相同时,通常原因是您以前的程序仍在运行,而不是新软件。该
type
命令可以帮助诊断这一点。根据对您的问题的进一步调查,这似乎是正在发生的事情。当你运行
type -a git
时,它显示你有多个安装,git
并且实际运行的那个 (/home/.../linux-devkit/sysroots/x86_64-arago-linux/usr/bin/git
) 与通过Ubuntu 的包管理器安装的和你最近从源安装的不同。如果您不需要那个,最好将其卸载。如果您确实需要它,或者由于某种原因无法删除它 - 同时,在您删除它之前 - 您可以通过确保包含正常工作的
git
可执行文件的目录出现在$PATH
此之前解决问题一。如果可以接受之前
/usr/bin
放入,那将解决问题。$PATH
/home/.../linux-devkit/sysroots/x86_64-arago-linux/usr/bin
但这可能是不可接受的。也许您依赖于首先在其他 bin 目录中找到的其他可执行文件。在这种情况下,您可以将符号链接放在
/usr/bin/git
您之前的某个其他目录中$PATH
。我建议
git
通过重命名或删除特定文件(例如/home/.../linux-devkit/sysroots/x86_64-arago-linux/usr/bin/git
. 原因是它git
有多个可执行文件,因为一些命令是在主可执行文件git
外部提供的。git
重命名(或删除)一些但不重命名可能会导致您运行的一个版本git
使用另一个版本的git
. 这可能在大多数情况下都可以正常工作,但是如果没有,则进行故障排除会很复杂。