【问题标题】:git submodule conflicted pushedgit子模块冲突推送
【发布时间】:2014-07-31 23:57:17
【问题描述】:

我在这里遇到了一个非常奇怪、糟糕的情况。免责声明,我是 git 新手,我有点搞砸了。

所以我的 fork 中有很多基于 monodevelop 的子模块。

首先:我什至无法使用更新我的子模块 git submodule update --init --recursive.
我尝试了一堆类似的命令,包括 rebase、foreach 等。所以我终于使用git submodule foreach git pull origin master 获得了最新的命令。在此之后,我得到了所有文件。然后我提交并推送了我的更改

现在:我刚刚注意到我所有的子模块都有冲突。

git status 表示一切都是最新的。子模块更新说一切都是最新的,即使有力量。 git fetch 说一切都是最新的。

【问题讨论】:

    标签: git github git-branch git-merge git-submodules


    【解决方案1】:

    git submodule update --init --recursive 会将您的子模块更新为特定的 SHA1,记录在您的主存储库的索引中(作为 gitlink entry)。

    如果您需要子模块跟随分支,您可以转换该子模块声明以使其跟随该分支(在初始化步骤之后)git submodule update --recursive --remote
    见“Git submodules: Specify a branch/tag

    【讨论】:

      【解决方案2】:

      对于任何弄乱他们的子模块的人。在这方面我也得到了朋友的帮助。

      我所做的是合并子模块并将它们提交到我的主模块中。一般的经验法则是我不应该这样做,而是向子模块 repo 发出单独的拉取请求。

      无论如何,我只是进入了每个子模块目录,git log # hit q to cancel out of the entire output.。当我获得正确提交的提交 sha 时,我想返回。
      然后我做了git reset --hard c5652 # Partial commit id, if no other branch or file have that name. 这是我的问题的修复。

      我对整个工作原理不是很清楚,我肯定会阅读更多内容。

      【讨论】:

      • 将子模块内容放入 master 确实不好:它删除了我在回答中提到的 gitlink 条目并将其替换为常规文件夹。 reset --hard 是一个很好的举措。 +1
      • @VonC 是的,这就是我搞砸的地方。我不知道它会弄乱 gitlink。这是出于无知,我应该更好地关注正在发生的事情。我很高兴它现在解决了。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2021-03-08
      • 2019-02-22
      • 2017-10-05
      • 2022-09-27
      • 2021-01-31
      • 2012-11-18
      相关资源
      最近更新 更多