【发布时间】:2022-10-14 01:55:36
【问题描述】:
从here 等其他答案中,我了解到这会导致嵌套存储库。看起来怎么样?可以在它们之间切换当它们都具有相同的名称时它是如何工作的?
我错误地这样做了,它看起来好像原来的被覆盖了。 .gitignore 被替换,我只看到新存储库的分支,而旧存储库的文件显示在工作目录中。
【问题讨论】:
标签: git
从here 等其他答案中,我了解到这会导致嵌套存储库。看起来怎么样?可以在它们之间切换当它们都具有相同的名称时它是如何工作的?
我错误地这样做了,它看起来好像原来的被覆盖了。 .gitignore 被替换,我只看到新存储库的分支,而旧存储库的文件显示在工作目录中。
【问题讨论】:
标签: git
git clone 命令拒绝跑步在占用的目录中。
这默认git clone操作:
git clone <url>
创建一个新的空目录这样新的克隆就不会使用占用的目录。但是,您可以编写:
git clone <url> <path>
告诉git clone 使用指定的path.在这种情况下,path必须命名一个存在的,空的目录或能够被创建作为一个空目录。空目录将由git clone 填充。如果path参数命名一个存在且不为空的目录,git clone 拒绝运行。
“嵌套”存储库发生在工作树一个普通的日常存储库包含一个目录,该目录本身就是另一个 Git 存储库的工作树。
例如,假设您运行:
git clone https://github.com/git/git.git
创建 ./git 作为 Git 存储库克隆的工作树,然后:
cd git
进入这个工作树。使用“显示隐藏文件”检查树(例如,Linux 系统上的ls -A),您会看到这里有一个.git 目录。这个隐藏的.git 目录包含实际的存储库;您执行cd git 进入的顶级git 持有工作树。
如果您现在运行:
git clone <other-url> project
并在工作树中创建了一个新目录project,运行ls -A project 或类似内容会告诉您project 也包含一个.git 目录。 project 目录是另一个存储库的工作树。
现在运行git add project(将打印一条巨大的警告消息),然后运行git commit,将添加一个gitlink到 Git 的 Git 存储库。 gitlink 是子模块的一半。此时缺少的一半是.gitmodules 文件,git submodule add 会创建该文件,但运行git add project 没有。这是一个根本性的错误:此时创建的提交具有我喜欢称之为“半途而废的子模块”,无法合理使用。这就是为什么git add project 会打印出巨大的警告信息。 (如果git add project 拒绝添加它可能会更好,真的,但这不会向后兼容,而且 Git 人员非常重视一次向后兼容数十年。)
那么,无论您的实际问题是什么,这都是您在这里没有正确描述的问题。
【讨论】: