gpt4 book ai didi

Git 将嵌套的 git repos 视为常规文件/文件夹

转载 作者:太空狗 更新时间:2023-10-29 13:43:00 26 4
gpt4 key购买 nike

我有一个像这样组织的顶级 git 仓库:

  • .git/
  • repo A/
    • .git/
    • 文件
    • 文件2
    • 文件夹/
    • ...
  • 文件
  • 文件2
  • 文件夹/
  • ...

我怎样才能让 git 到 addcommit repoA (和 repoA/.git )就好像它们是常规文件/文件夹一样?

具体来说,我想绕过将此类文件夹作为子模块的处理,但我想保留嵌套存储库的分支/历史记录(因此需要 .git 文件夹)。

我不想更改嵌套存储库的状态(通过提交或 merge 历史记录),也不想将其推送到远程上的单独存储库。

预期结果与我要 tar 一样repoA和联合国 tar稍后。也就是说,所有文件都完好无损,没有经过 git 的修改或特殊处理。

最佳答案

这不是直接可能的。 .git 目录对于git 有特殊意义。当您从 git 工作树(不一定是从顶层)运行 git 操作而没有明确指定存储库的路径(通过 --git-dir 选项或 GIT_DIR 环境变量)时,后者会通过查看自动发现对于包含 .git 子目录的第一个祖先目录。旨在被视为常规内容的 .git 目录会干扰该过程。

但是,我可以建议以下解决方法:

  1. 在您的子存储库中,将 .git 目录重命名为其他名称(例如 .git.subrepo.pseudogit 等) :
mv repoA/.git repoA/.pseudogit
  1. 添加并提交子仓库目录:
git add repoA
git commit -m "Added repoA as regular sub-directory"

在此之后,子存储库树内部的 git 操作将默认使用主存储库。当您需要研究子存储库的历史时,您将不得不使用 --git-dir 选项:

cd repoA
git --git-dir .pseudogit log

关于Git 将嵌套的 git repos 视为常规文件/文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406739/

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