我正在使用的某个项目中包含了一个 .gitmodules 文件:
赏金:理想的解决方案,#--在执行标准的git子模块“pulls/inits”之前明确pull metalib(目前希望以后能够修复,使git“pull”完成所有操作)
(iit_synthesis) brando9~/proverbot9001 $ cat .gitmodules | grep 'metalib'
[submodule "deps/metalib"]
path = deps/metalib
url = git@github.com:plclub/metalib.git
[submodule "coq-projects/metalib"]
path = coq-projects/metalib
url = git@github.com:plclub/metalib.git
当我通过命令行执行时,由于gitignore文件的原因它不允许我这样做:
(iit_synthesis) brandomiranda~/proverbot9001 ❯ git submodule add --name coq-projects/metalib https://git@github.com:plclub/metalib.git coq-projects/metalib
The following paths are ignored by one of your .gitignore files:
coq-projects
coq-projects/metalib
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
我打算手动修改它,但感觉很不舒服,很奇怪。然后我会强制更新:
git submodule update && git submodule init # todo modify to only target metalib
使用git命令重新添加并更新特定的git模块的正确方法是什么。
应该这样做才是正确的解决方案:
git submodule add -f --name coq-projects/metalib https://github.com/plclub/metalib.git coq-projects/metalib
感觉很巧妙?它总是会起作用吗?
赏金:理想的解决方案,#--在执行标准的git子模块“pulls/inits”之前明确pull metalib(目前希望以后能够修复,使git“pull”完成所有操作)
#-- Pull metalib explicitly 1st before doing the standard git submodule "pulls/inits" (for now hope to fix later so git "pull" does it all)
# - I think this pulls the coq projects properly in proverbot
# todo: Q: metalib missing, how do I pull it with original git submodule commands?
# todo: https://dev59.com/ssXsa4cB1Zd3GeqPmpYF
# todo: https://github.com/UCSD-PL/proverbot9001/issues/59
# todo: https://github.com/UCSD-PL/proverbot9001/issues/60
# ### rm -rf coq-projects/metalib # why?
git submodule add -f --name coq-projects/metalib https://github.com/plclub/metalib.git coq-projects/metalib
例如:
git submodule update && git submodule init
Bounty2: 需要详细的答案细节以便能够验证建议是否有效
我希望所给出的答案提供更多详细信息,通过提供检查方式来检查更新后的gitmodules是否符合预期,无论是在.gitmodules文件、下载的仓库还是任何检查中。代码和自然语言解释对于验证最为重要。
初始化和更新哪个先执行?
相关说明,我应该何时运行git submodule update
与git submodule init
真的让我感到困惑。我通常会先运行git submodule init
,然后再运行git submodule update --init --remote
。这样做正确吗?相关链接: git submodule update或git submodule init应该先运行哪个?
相关:
git submodule
命令将停止抱怨。但在这种情况下,这里没有真正的“适当”的东西;Git的子模块目前仍然是一个很多机制但UI很少的东西,因此还没有理由去深入到齿轮和电线中并拉扯和推挤东西。 - torek.gitignore
文件中。 - Charlie Parkergit submodule update
和git submodule init
真的让我很困惑。我通常会先运行git submodule init
,然后再运行git submodule update --init --remote
。这样做正确吗?相关链接:https://dev59.com/WH8QtIcB2Jgan1zn1Txg - Charlie Parker