【问题标题】:Updating Git submodule without losing my code在不丢失代码的情况下更新 Git 子模块
【发布时间】:2020-07-16 17:52:57
【问题描述】:

我是 Git 新手,现在处于这种情况:

我是一名计算机科学专业的学生,​​现在我们有一个来自我大学的 git 存储库(位于 GitLab 上),并且在那个“主”存储库中,我们每 2 周都会获得一个新项目(我们只需要完成代码) .这些项目是主存储库中的子模块。教授每两周使用一个新项目(子模块)更新主存储库。

使用git pull 我可以更新主存储库,使用git submodule update --init --recursive 我可以更新我的子模块。如果一个新项目已经在我的主存储库中并且我正在处理它,例如教授可以再次更新该子模块的master 分支(错误修复或类似内容)。

在不丢失代码的情况下更新 master 分支和子模块(如果我的代码几乎完成)的最佳解决方案是什么。 我读了一些东西,我可以创建一个新的本地分支并对其进行处理,如果有更新,我可以轻松地合并我的更改和master 上的“错误修复”。但这不是合并冲突吗?希望你能理解我。

【问题讨论】:

  • 是的,您可以在新分支中签出代码。完成后,您可以将其合并回母版。是的,这可能会导致合并冲突,但您可以使用合并工具逐行选择以接受更改
  • 如果您使用的是 IDE,请查看它的文档以使用 GIT,正如 Stevetro 所说,它们中的大多数都有一个集成的合并工具

标签: git gitlab git-branch git-submodules


【解决方案1】:

欢迎来到 Git 朋友!我想说的一件事是,最好对存储库使用特定术语,而不是像“主存储库”这样模糊的术语(你是新手,所以你现在可以原谅;)

我们使用术语 remote 存储库表示上游存储库(ie,当您在 GitLab 上打开存储库(存储库的缩写)时,您会在浏览器上看到 GitLab 链接。它最初是位于其他人的计算机上(可能是您的教授的))。您计算机上的存储库称为local 存储库。

继续您的问题,使您的本地代码与上游完全更新的方法是:

  1. 做一个git pull。这将从远程引入最新更改并将它们合并到您的本地存储库中。这可能会导致合并冲突,这很好,因为当同一段代码发生更改时会发生合并冲突。您可以参考this的回答了解更多关于合并冲突的信息。
  2. 通过git submodule update --init --recursive 跟进。这会将您的子模块更新到您的超级项目()(包含整个项目的目录)所期望的位置。

另外,如果超级项目只有子模块而没有其他,git submodule update --init --recursive 就足够了。

如果您想了解更多关于 git 或与之相关的术语,您也可以参考this

如果您还有任何疑问,请随时发表评论! :)

最好的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多