我如何un-submodule一个Git子模块(把所有的代码回到核心)? 至于如何“应该”我,如在“最佳程序”…
我有一个子模块项目指向一个无效的提交:子模块提交保持本地,当我试图从另一个回购获取它: $ git submodule update fatal: reference is not a tree: 2d7cfbd09fc96c04c4c41148d44ed7778add6b43 Unable to checkout '2d7cfbd09fc96c04c4c41148d44ed7778add6b43' in submodule path 'mysubmodule' 我知道子模块HEAD应该是什么,有没有什么办法可以在本地进行更改,而无需从提交2d7cfbd09fc96c04c4c41148d44ed7778add6b43的回购中2d7cfbd09fc96c04c4c41148d44ed7778add6b43 ? 我不确定我是否清楚…我发现了类似的情况 。
在我的项目中,我需要使用存储在几个Git存储库中的第三方代码。 我的项目也存储在(单独的)Git仓库中。 在主项目上有几个人和我一起工作,我是维护者。 在之前的项目中,我曾经手动将依赖项复制到Git工作树上,添加了一个指定版本的小文件。 现在这是相当不舒服的,因为我需要每天更新一个依赖关系,并经常为自己贡献代码,大部分时间与主项目的变化相结合。 我决定尝试Git子模块来进行pipe理。 我尝试的越多,我越是感到沮丧。 甚至似乎手工复制也许更好。 以下是我的一些担忧: 我们不再能够通过一个命令获得一致的存储库状态( git checkout现在需要git submodule update –init )。 我们无法正确使用一些Git工具( git archive是最值得注意的)。 我们无法看到来自主项目的子模块的状态更改/差异。 正如我刚刚发现的一样, git submodule不能与–git-dir和–work-tree选项一起工作,并且需要将当前目录的物理更改添加到“正在工作的树的顶层”。 看来,为了简化我们的子模块工作stream程(这是一个操作==一个命令),我们必须写一个比较厚的Git包装器。 这真是难过;这真是伤心。 请注意,从Git移出或将子项目开发完全合并到主项目中不是一种select。 也许我用错误的方式使用git submodules ? 有什么好的工作stream程教程? 即使你不知道正确的答案,也请说出来,但请分享我的担忧。 🙂
我怎样用一个不同的git仓库replace一个git子模块? 具体来说,我有一个子模块: 位于./ExternalFrameworks/TestFramework ,指向一个git repo git@github.com:userA/TestFramework.git 我想现在指向git@github.com:userB/TestFramework.git 。 问题是,当我用这里描述的方法删除子模块,然后使用该命令重新添加它 git submodule add git@github.com:userB/TestFramework.git 我得到这个错误: A git directory for 'ExternalFrameworks/TestFramework' is found locally with remote(s): origin git@github.com:userA/TestFramework.git If you want to reuse this local git directory instead of cloning again from git@github.com:userB/TestFramework.git use the '–force' option. If the local git directory is not the correct repo […]
我有一个Git子模块的项目。 它来自于ssh:// … URL,并且在提交A上。提交B已被推送到该URL,并且我希望子模块检索提交,并更改为该提交。 现在,我的理解是git submodule update应该这样做,但它不。 它不做任何事情(没有输出,成功退出代码)。 这是一个例子: $ mkdir foo $ cd foo $ git init . Initialized empty Git repository in /…/foo/.git/ $ git submodule add ssh://user@host/git/mod mod Cloning into mod… user@host's password: hunter2 remote: Counting objects: 131, done. remote: Compressing objects: 100% (115/115), done. remote: Total 131 (delta 54), reused 0 […]
我有一个git仓库中有几个子模块。 如何在git submodule init运行后列出所有子模块的名称? git submodule foreach命令可以回显子模块的名字,但是只有在init步骤之后没有发生的情况下才能使用。 链中有更多的步骤需要在可以检出之前进行,而且我不想将子模块的名称硬连线到脚本中。 那么是否有一个git命令来获取所有当前注册但尚未签出的子模块的名称?
有些时候(在1.6.x版本左右,我想)git意识到子模块内部的变化。 这只会使我烦恼: $ git status vendor | grep修改: #修改:vendor / rails(修改的内容) $ git diff供应商/ diff – git a / vendor / rails b / vendor / rails —一个/供应商/铁路 +++ b /供应商/导轨 @@ -1 +1 @@ – 子项目提交046c900df27994d454b7f906caa0e4226bb42b6f +子项目提交046c900df27994d454b7f906caa0e4226bb42b6f-dirty 请让它停止? 编辑: 好的,我有一个答案。 现在我还有一个问题: 我可以把它放在~/.gitconfig吗? 从我最初看来,我看不出来,我没有看到任何东西通过略读补丁。 (我想我仍然可以制作一个别名。)
是否有可能在一个目录中有2个git仓库? 我不会想,但是我想问问。 基本上,我想检查我的主目录configuration文件(如.emacs),这些文件应该在所有我工作的机器上是通用的,但是有一个本地文件的存储库(例如.emacs.local),它包含机器特定的configuration。 我能想到的唯一方法就是在本地configuration一个子目录,并忽略主git仓库中的子目录。 任何其他的想法?
.gitmodule文件仅指定模块存储库url。 git submodule如何知道要下载哪个版本? 它似乎总是检查出最新版本。 那么,开发人员如何确保主项目和子模块之间的兼容?
我有一个Web应用程序,以特定的方式探索其他Web应用程序。 它包含demos文件夹中的一些网页演示,其中一个demos现在应该有它自己的存储库。 我想为这个演示应用程序创build一个单独的存储库,并使其成为一个 分装 来自主存储库的子模块 ,而不会丢失其提交历史logging。 是否有可能保留库文件夹中的文件提交历史logging,并从它创build一个存储库,并将其作为一个子模块使用?