我们正在迁移到Git。现在我已经阅读了所有关于不要在Git中使用子模块的内容,但是,我认为它符合我们的目的。我们有共享库,无论它们在哪个项目中都需要更新,然后同步回服务器。我已将项目添加到git,添加了一个子项目,一切似乎都正常。然而,一件非常奇怪的事情发生了,一旦我在visualstudio中保存了一个属于子项目的文件,它就不再将其标记为更改,我也无法再提交或推送它。在主项目中一切正常。它将其标记为已更改,直到文件被保存然后它才消失?任何线索/提示将不胜感激 最佳答案 VisualStudioUserVoice中有请求允许Comm
这个问题在这里已经有了答案:HowdoIremoveasubmodule?(37个答案)关闭8年前。我在Git存储库中有一个子项目,我想删除但无法删除。在GitHub网络界面上,子模块显示为黑色(或灰色)文件夹图标并且不可点击。该文件夹存在一些问题,即使我的本地代码在该文件夹中有文件并且我推送到我的存储库,更改也不会应用到GitHub远程。不知何故这个文件夹被忽略了。我检查过它不在.gitignore文件中。关于尝试删除我使用的子项目:gitsubmoduledeinitsubmodule-name但是它给出了错误error:pathspec'submodule-name'didnot
我在目录projects/myRepo中有一个带有子模块的git存储库,我想将该目录重命名为projects/my-repo。根据this问题可以简单地用mv来完成。但是在带有子模块的repo中,git不断告诉我fatal:Notagitrepository:projects/myRepo/.git/path/to/submodule```即使是gitstatus。子模块配置:[submodule"path/to/submodule"]path=path/to/submoduleurl=https://github.com/user/projectName.git不知何故,子模块的“内
假设我在RepoX中有两个分支,分别称为BranchA和BranchB。RepoX还有一个名为SubmoduleY的子模块。BranchA的SubmoduleY版本为“abc”,BranchB的SubmoduleY版本为“def”。假设我想将BranchAmerge到BranchB中,但我想让BranchB的SubmoduleY指向其原始版本的“def”。我看到有几种方法可以做到这一点:方法一:checkoutBranchB。将SubmoduleY移至修订版“abc”,使实际merge变得轻松(我们现在不想在子模块级别进行任何merge)。提交SubmoduleY的新修订(我们不能让它
在用gitfilter-branch重写了一个仓库的历史之后,所有的SHA都改变了。现在,如果该存储库(我们称它为X)在另一个存储库(我们称它为Y)中用作git子模块,我们就会遇到问题。事实上,Y知道根据该子模块中提交的SHA加载哪个版本的子模块X。由于X中的所有SHA现在都已更改,因此Y指向不再存在的SHA。有没有办法重写Y的历史,使其指向子模块X的新提交SHA(包括当前和过去的提交)?我猜想鉴于旧SHA和新SHA之间的对应关系,这在原则上是可能的,但我担心它会涉及讨厌的bash脚本。有没有更简单的? 最佳答案 butIamafr
是否可以同时提供对git子模块的https和ssh访问?有些人可能更喜欢使用https而有些人可能只能使用ssh(例如,因为他们在ssh隧道后面)。是否可以提供两种获取子模块的选项? 最佳答案 您可以在引用子模块时使用相对URL。例如,如果您有一个应用程序存储库:git@example.org:project/app.git或http://example.org/git/project/app.git和一个库存储库:git@example.org:lib/some-library.git或http://example.org/git
我有一个公共(public)存储库。在其中我想使用一个私有(private)的子模块。如果我将此子模块包含到我的公共(public)存储库中,每个人都可以看到该子模块的内容吗? 最佳答案 否:在公共(public)存储库中包含子模块意味着将其URL记录在公共(public).gitmodules文件中。通过您的存储库的递归克隆,该URL上的存储库将不会比它本身更容易访问。这就是为什么,例如,使用submoduleswithGitHubPages不可能:YoucanonlyusesubmoduleswithGitHubPagessit
我有几个工作树有一些依赖。据我所知,gitsubmodule将强制执行以下内容:在每个使用它的工作树(主)的子目录中拥有每个工作树(从属)的副本主存储库复制从属存储库的所有信息我不介意repo协议(protocol)变大,但拥有副本对我来说是完全不能接受的。这将迫使我重新组织所有项目,以便副本可以链接。此外,编辑错误的文件很容易导致困惑。我有另一个想法:每个master存储其所有slave的列表。不需要母版中的其他信息。每次在master中提交时,都会在slave中创建一个“snapshot-commit”。“snapshot-commit”是工作树当前状态的快照,它忽略了索引的当前状
我正在编写一个服务来更新super项目中每个子模块指向的提交。我天真的做法是运行gitfetch在子模块中,gitreset--hard,然后添加子模块并提交。我想跳过gitfetch步骤并简单地强制子模块指向给定的哈希以获得更好的性能(跳过获取对象和占用磁盘空间)并处理可能不再存在于上游并且无论如何都无法获取的提交(如果它们被强制推送)。 最佳答案 解决方法是直接写入Git索引,对于子模块来说其实很简单。使用Git2:gitupdate-index--cacheinfo160000,,例如,如果您的项目目录结构如下所示:.├──.
我还不是Git大师,遇到了一个我不知道如何解决的问题。我有一个带有我的WordPress自定义框架的存储库,我通过gitsubmoduleaddwp_repo_url从其原始存储库中将WordPress添加为子模块。当我将我的repo克隆到本地机器时:gitclone--recursivehttps://github.com/user/repolocal_dir它按预期下载了WP子模块,但问题是-实际文件只有20.7Mb,而在.git/modules/core/objects/pack我有一个巨大的124Mb。pack文件,我想,它类似于该子模块的提交历史/修订。如何在克隆时重新添加子