相关疑难解决方法(0)

嵌套的git存储库?

我可以嵌套git存储库吗?我有:

 /project_root/
 /project_root/my_project
 /project_root/third_party_git_repository_used_by_my_project
Run Code Online (Sandbox Code Playgroud)

git init/add/project_root是否有意义在本地轻松管理所有内容,还是我必须单独管理my_project和第三方?

git

173
推荐指数
6
解决办法
8万
查看次数

SVN:外部相当于Git?

我使用svn:externals从另一个SVN存储库中使用了两个SVN项目.

我怎样才能在Git中拥有相同的存储库布局结构?

svn git

167
推荐指数
3
解决办法
7万
查看次数

git子模块跟踪最新

我们正在将我们(巨大的)项目转移到git,我们正在考虑使用子模块.我们的计划是在超级项目中有三个不同的头:发布,稳定,最新.项目负责人将处理释放和稳定的分支机构.他们将根据需要移动子模块.

问题是"最新"头.我们希望超级项目"最新"头部跟踪所有子模块的主分支(自动).如果能够显示子模块的所有提交历史,那也很棒.

我看过gitslave,但它不是我们想要的.有什么建议?

git git-submodules git-track

130
推荐指数
1
解决办法
8万
查看次数

Git子模块的替代品?

我觉得使用Git子模块对于我的开发工作流程来说有点麻烦.我听说过Git子树和Gitslave.

  • 是否有更多工具用于多个存储库项目以及它们如何比较?
  • 这些工具可以在Windows上运行吗?

git-submodules git-subtree git-slave git-repo git-subrepo

76
推荐指数
1
解决办法
2万
查看次数

如何将Git中的文件添加到以前的子模块的路径中?

我有一个项目,用于在路径中包含子模块mysubmodule.我从源代码(1.8.3-rc2)安装了最新的Git并运行git submodule deinit mysubmodule.然后我删除了.gitmodules文件并提交了更改.我还.gitmysubmodule文件夹中删除了该目录.

我现在想mysubmodule直接将文件提交到我的仓库,但是git说没有变化.如果我输入git add mysubmodule它什么都不做.如果我输入git add mysubmodule/file.txt它说fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

我还发现,如果您查看一个新版本的repo,它会创建一个mysubmodule目录,尽管没有.gitmodules文件.跑步git submodule init会给你一个No submodule mapping found in .gitmodules for path 'mysubmodule'错误.

我该如何解决?

git git-submodules

66
推荐指数
1
解决办法
2万
查看次数

强制Git子模块始终保持最新状态

我喜欢git子模块.另外,我讨厌git子模块.我喜欢他们的是它如何使你能够干净地划分依赖关系等等.我明白让他们指出一个回购的特定提交,我这样做.但在我的情况下,我正在构建一个将在另一个项目中使用的库,所以我想把它保存在那个单独的repo中.

然而,当我每天在这个库上工作时,烦恼就来了,我不得不使用我的库切换回app来提交指针更新.

那么,当我不断更新并添加到这个库时,是否有可能让git子模块始终位于它所指向的repo的头部?

git git-submodules

54
推荐指数
2
解决办法
3万
查看次数

克隆和子模块更新后,Git子模块处于"分离头"状态

当我克隆我的git repo时,其中一个子模块位于一个带有奇怪名称的分支中,我认为这意味着它有一个" 分离头 "(我甚至不确定这意味着什么).

如果我检查我的主分支的子模块,然后运行" git submodule update --init --recursive"它再次发生.

有人知道发生了什么吗?

git

32
推荐指数
2
解决办法
2万
查看次数

供应商分支在Git

Git项目中包含第二个项目,其内容正在独立工作.

子模块不能用于较小的子模块,因为当用户尝试克隆或下载"父"时,甚至必须包含子项目.

不能使用子树合并,因为正在积极开发子项目,并且子树合并使得将这些更新合并回原始项目非常困难.

我被告知这个解决方案在SVN世界中被称为"供应商分支",并且它在Git中是如此简单,以至于甚至不需要寻址.网上有很多半生不熟的教程.

尽管如此,我似乎无法让它发挥作用.

有人可以(非常好吗?)解释我如何创建一个结构,一个项目存在于另一个项目中,并且可以从同一个工作目录开发和更新.理想情况下[或者更确切地说:如果不支持则非常重要]当客户端尝试下载"父"项目时,应该自动给他最新版本的子项目.

请不要向我解释我应该如何使用子模块或子树合并甚至SVN:Externals.这个线程是以下SO线程的产物,如果在那里错过了某些东西,请把它贴在那里.这个主题试图了解如何供应商分支机构,以及更长,更清晰,更笨拙的解释,我收到的解释会更快乐.

git version-control branch vendor-branch

29
推荐指数
2
解决办法
2万
查看次数

什么是组件驱动开发?

组件驱动开发术语开始被广泛使用,尤其是 与控制反转有关.

  1. 它是什么?
  2. 它解决了什么问题?
  3. 什么时候适当,什么时候不适合?

paradigms components ioc-container inversion-of-control

19
推荐指数
5
解决办法
1万
查看次数

从不同的存储库应用gradle文件

我们为不同的项目提供了多个git存储库.还有一个用于基础架构目的的git存储库.我们在此基础结构存储库中编写了自定义gradle插件,我们在其他存储库中使用这些插件

例:

buildscript {
    apply from: 'foo/bar/devinfra-buildscript.gradle', to: buildscript
}
apply plugin: 'devinfra'
Run Code Online (Sandbox Code Playgroud)

这里我们在每个Git存储库中都有buildscript {}文件,foo/bar/buildscript.gradle.我想知道是否有一种方法可以直接从基础架构存储库中应用该文件.这样就可以直接在其他存储库中看到任何更改.

git gradle

12
推荐指数
2
解决办法
2万
查看次数

月食在月食失踪的树

好像我有一个丢失的树错误。公平地讲,我完全只是在git上弄乱了我的本地文件,并且受够了,在回购协议上做了完整的硬盘删除,并从远程主服务器重新克隆了。现在,我收到以下错误。我要做的第一件事就是为我的工作创建一个本地分支。

如果我不删除所有内容,而是通过时态,我很有可能恢复很多工作,对吗?(这可能也显示了我现在在git和项目中的状态……)

如果有什么不同,我在做一个android项目。

我正在阅读 这篇文章,它似乎很有帮助,但是我不知道如何找到我的“ a30df1173f14dea24df661f1eef749fed2f4e1ed” sha1哈希。

在做

git ls-tree a30df1173f14dea24df661f1eef749fed2f4e1ed

给我以下

100755 blob 2851ba4fdf2a134f8fc97fd60b3045b73cd6039b    .DS_Store
100755 blob 3f9691c5dda29b09cb96060fd6ec7017f6c671d2    .classpath
100755 blob c50d3b4fe2f6221db617840561dc94d7690bb883    .gitignore
100755 blob 6b58f1723a252cfd314d108fadac4b71a4209c1c    .project
100755 blob 39f00018845d776de324707090d26c5153720e22    AndroidManifest.xml
100755 blob 94a9ed024d3859793618152ea559a168bbcbb5e2    COPYING
100755 blob c1853e4c312a938d5890f5f4e0844782429ba11e    default.properties
040000 tree 423accda532f8788f916b26b863ddf32e2896aa6    docs
160000 commit 0000000000000000000000000000000000000000  eagle vision
100755 blob 424f2604203eabd2310165b143b430326aa87ee7    ic_launcher-web.png
040000 tree 2b83cd828cd11a11e84a2d8f646dfa40de109827    libs
100644 blob 8a7b1fac8f8c12e925e56776f225730c4712f92a    lint.xml
040000 tree c0182f719fccf5fc8b0d7658c3d15fe4deac0d9e    plugins
100755 blob f2fe1559a217865a5454add526dcc446f892385b    proguard-project.txt
100755 blob 9ae01de96458dbded45d2a442c09c0f4d33e473a    project.properties
040000 tree 3c9446b3bb23eebe80942992ee03e01a7390ba80    res
040000 tree …
Run Code Online (Sandbox Code Playgroud)

eclipse git

5
推荐指数
1
解决办法
3776
查看次数

Git子库

我是一个小型固件团队的成员,我们使用私有Git服务器进行版本控制.我们的代码库通常具有用于平台特定代码的文件夹,由多个平台使用的公共代码以及由我们开发的微处理器的制造商提供的SDK.

目前我们的存储库以公共代码为中心; 每个平台在存储库中都有一个文件夹.这至少有两个严重的后果;

  1. 当我们推动一个平台的更改时,对于共享相同公共代码的所有其他平台,它是可见的.这会使提交历史记录与多个平台的发布混乱,并且在过去导致混淆我们正在审查哪个平台的更改.

  2. 在提交之前,需要对存储库中的所有平台验证对公共代码的更改,从而导致不必要的痛苦.(有人昨天没有这样做,并做了一些更改,导致我们的几个旧平台无法构建.这个特殊的存储库有5个平台)

我正在努力为每个平台建立一个存储库,以便我们可以定期更改公共代码并升级SDK,而不必强制更新和验证我们支持的所有平台.由于我们是一个五人团队,这些问题通常会在关键时刻发布,因此可以为我们节省大量不必要的脑损伤和时间.当然,困难的部分在于实施.

现在我想象的是一个系统,每个平台都有自己的存储库,每个公共代码库都有自己的存储库,我们使用的每个SDK都有自己的存储库.平台存储库将链接或以其他方式引用它们用作"子存储库"的公共代码和SDK.

我已经阅读过有关子模块的信息,但我认为它们会导致更多问题而不是修复; 最近我们不得不调试三年前的固件,这需要将我们的本地代码库重置为问题版本以进行静态分析.据我所知,子模块的本地版本与其所在的存储库分离,这意味着将存储库重置为旧提交将使子模块相对于存储库的其余部分处于"未来"状态.在调试旧代码的上下文中,此行为是100%不可接受的.

这是我要实现的项目的项目符号列表; (按重要性排序)

  1. 打破特定代码远离公共代码,因此对公共代码和/或SDK的更改不会对其他平台产生无法预料的后果.

  2. 为每个平台,每个公共代码库和每个SDK创建新的存储库.

  3. 将远程存储库克隆到本地计算机应该是一个步骤; 在构建平台之前,不应强迫新用户拉出每个子存储库.

    • 此外; 恢复旧代码,包括通用代码,以及用于构建任何特定平台的版本XXX,YYY SDK,必须是可能的.

    • 编辑:我最后一次"恢复"代码我使用硬重置到我正在调试的构建和软重置到比我知道的年龄大一年的构建很好,但只有我的语法中的Git插件荧光笔会显示已知好和已知坏之间的变化.

      顺便提一下,这个特殊的平台是单片的,这个问题不适用于它,但为了论证,我们会说它确实适用.

  4. 修改公共代码不应影响平台,直到平台的维护者引入新的公共代码.(我相信通过添加一个公共代码的标记提交而不是公共代码的主人,可以使用子树)

  5. 只读子存储库是可接受的限制.(即,无法在平台的存储库中修改子存储库,或者无法从平台的存储库中推送对子存储库的更改)

  6. SmartGit/HG支持是可取的,因为除了我们的一个成员之外的所有成员都使用它.

  7. 编写一次性任务脚本是可以接受的,但我不想污染具有Git工作脚本的平台.

我也读过关于子树的内容,但此刻我不确定他们是否会直觉地允许我想要的行为.我的主要问题是:Git是否支持这种功能?如果是,该功能是通过子树还是其他方法实现的,我还不知道?

git dependencies repository

5
推荐指数
1
解决办法
973
查看次数

将子模块更新为最新版本而不累积更新历史记录

更新子模块submodule --remote将拉入子模块的HEAD,而不是包装git repo中记录的哈希.但似乎包装git repo将继续管理它们本身的散列,不必要地将噪声引入其自己的历史.

例如submodule update --remote,在包装项目中会引入更改之后,例如:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   <module-name> (new commits)
Run Code Online (Sandbox Code Playgroud)

在包含子模块的git仓库中是否可能不包含关于子模块哈希的任何哈希或信息,这样submodule update就不会引入新提交的需要,也不会反映在项目的历史中?

激励场景:

这将解决可以描述为"始终使用所有子模块中的最新子模块"的工作流程,当前需要在每个子模块之后submodule update进行特殊管理(提交或以某种方式从历史记录中移除上述更改记录...这使得工作流程非常混乱,当您总是想用最新的).

git

3
推荐指数
1
解决办法
589
查看次数