📜  GitHub 中子模块的使用

📅  最后修改于: 2021-10-24 12:54:35             🧑  作者: Mango

Github 是 Git 存储库的 Web 托管服务。在 Github 中,我们可以存储我们的 Repository 来存储我们的源代码并与不同的用户协作,这就是它被称为开源工具的原因。如果您了解 Git 是什么以及它如何运作的基础知识,那么充分利用 Git 对您来说可能会简单得多。在您学习 Git 时,尝试将您的精神从您可能想到的不同 VCS(例如 CVS、Subversion 或 Perforce)的事物中解放出来——这样做将帮助您在使用该设备时远离不显眼的混乱。尽管 Git 的 UI 真的很像这个不同的 VCS,但 Git 以完全不同的方式存储和考虑数据,理解这些区别将帮助您避免在使用它时感到困惑。

Github 中的子模块

另一个存储库中的目录或 Github 存储库中的子目录(例如使用其中的另一个项目)称为子模块。

就像您在存储库中工作并且希望它在您的父存储库之一中使用一样。您只需添加有关添加到主存储库的子模块的信息。此信息描述子模块指向哪个提交。现在,如果您更新子模块,它不会影响您的父存储库,因为添加时的子模块将仅在您创建该子模块时指向该提交。

因此,子模块允许您将 Git 存储库作为另一个 Git 存储库的子目录。这使您可以将另一个存储库克隆到您的项目中并保持您的提交分开。此外,更新该子模块存储库不会更新父存储库中使用的子模块。

由于子模块是根据我们的需要生成的,如果子模块通过提交更新提交,您将看到意外行为。

添加子模块

第 1 步:使用以下命令:

git submodule add  https://github.com/kushagra67414/a3.git

第 2 步:运行命令:

git diff –-cached –-submodule

第 3 步:使用命令将更改添加到暂存区:

git add  (add all changes file to staging area)  
or
Git add   (to add a specific file at staging area)

第四步:

Git commit -m “comment” [在中央创建快照]

第 5 步:将更改推送到存储库

git push ( to push changes locally to remotely )

更新子模块

子模块不会自动更新,我们需要先获取数据并初始化我们的本地配置文件。

我们在 Github 上的存储库 a2 中添加一个文件。现在 a2 是 repo a1 的子模块

第 1 步:转到 repo a1,然后转到 a2 处的子模块

运行命令:

cd a1 and cd a2

现在我们在 a2 repo [repo a1 的子模块]

第 2 步:拉取远程完成的更改

git pull

第 3 步:现在该文件将位于您的子模块文件夹 a2 本地

记住一件事文件是在子模块 a2 中获取的,并且必须在 a1 存储库中进行更改。因为当指向子模块时,它充当存储库。现在重定向到父存储库。

第四步:查看repo a1的状态。

git status

您将看到在 a1 存储库中所做的更改未暂存,暂存并提交它以获得存储库的快照

第 5 步: git add 。 [ .意味着暂存存储库中存在的所有文件 n 文件夹]

git commit –m “comment”

第 6 步:使用命令git push

刷新你的 GitHub 你会看到变化

使用子模块克隆项目

有时,当我们使用子模块克隆项目时,包含子模块的目录,但其中没有任何文件。

子模块可以为空,也可以不为空。如果为空,则使用以下命令获取数据:

方法一:

在 git bash 中打开你的 repo 并在 bash 中重定向到你的本地存储库,然后:

第 1 步:使用命令git submodule init

这用于初始化您的本地配置文件,

第二步: git子模块更新

它的函数是从项目中获取数据

方法二:

我们可以不使用上述方法,而是使用单个命令

git clone –recurse-submodules  https://github.com/kushagra67414/a1.git

这种方法的优点是它获取和更新子模块内的子模块,即嵌套子模块