gpt4 book ai didi

git - 今天保持 git 子模块 checkout 与提交 ID 同步的策略?

转载 作者:行者123 更新时间:2023-12-03 14:49:56 25 4
gpt4 key购买 nike

很多关于自动更新子模块的问题已经被问到
StackOverflow 包括:

  • Is there a way to make git pull automatically update submodules?
  • Easy way to pull latest of all git submodules
  • Why doesn't git checkout automatically do git submodule update --recursive ?

  • 但在我看来,对于 git 子模块,目前还没有像 svn up 这样的单一方法。关于svn-externals。

    所以既然git每天都在变,我还敢再问:

    是否有(方便的)方法来初始化和自动更新子模块 checkout (即与它们相应的子模块提交 ID 保持同步) checkoutpull (即 mergerebase )?

    目前我有两种方法:

    #1:创建 post-checkout , post-mergepost-rewrite勾上以下内容
    #!/bin/sh
    git submodule update --init --recursive

    正如您已经看到的那样,这种方法有几个缺点:
  • 它是 复杂并且可能需要一个脚本来使它可靠地工作
  • 如果您 则无法正常工作已经使用这些 git-hooks
  • 提交 Hook 仅处于事件状态 在这个克隆上 (必须由
    每个克隆都在这个项目上工作的每个人)
  • 设置是 非标会迷惑别人

  • #2:为pull配置别名和 checkout
    git config --global alias.up 'pull --recurse-submodules'
    git config --global alias.co 'checkout --recurse-submodules'

    但这也不好:
  • 它不会--init子模块(可以通过分别运行 pull/checkoutsubmodule update 而不是
  • 来解决
  • 它是 非标并且不能使用脚本和片段
  • 它是 容易忘记使用 up/co而不是 pull/checkout
  • 它有效仅限本地机器/用户

  • 如果您可以做某事,这种方法会更像我想要的那样

    git config --global pull.recurseSubmodules true
    git config --global pull.initSubmodules true
    git config --global checkout.recurseSubmodules true
    git config --global checkout.initSubmodules true

    ..但你不能,是吗?

    最佳答案

    Git 2.13 , 你可以做git checkout --recurse-submodules <ref>这将确保事件子模块的工作树与 super 项目中记录的子模块提交同步 <ref> .

    Git 2.14 , 你可以做git pull --recurse-submodules ,它将执行正常的 pull 操作,然后调用 git submodule update --init --recursive (使用 --rebase 如果您使用 --rebase pull ),保持事件子模块工作树与记录在 super 项目中的子模块提交同步。

    Git 2.15 , 设置 git config submodule.recurse true将使其成为 all commands 的默认行为接受 --recurse-submodules标志,clone 除外和 ls-files .

    在不更改配置或使用这些选项的情况下,无法将此行为设为默认行为。

    注意做 git checkout --recurse-submodules <branch>当前分支没有子模块并且<branch>Git 2.27 之前初始化嵌套子模块失败.

    关于git - 今天保持 git 子模块 checkout 与提交 ID 同步的策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46644278/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com