我知道 JGit 中对 git 子模块的支持是有限的,但仍然想知道如何实现这一点:
git submodule foreach git checkout <branchName>
以及使用 JGit 的类似命令。
或者还有其他更好的基于 Java 的 Git API 吗?
git 命令“子模块”下载项目的整个源代码并且它是可编辑的......
有没有办法使子模块只读?
我只是想让我的 git 项目之一依赖于另一个项目,也许子模块不是正确的方法?完成此任务的更好/正确的方法是什么?
我刚刚开始按照本指南在我的 Android 应用程序中使用 git 子模块
我已成功克隆存储库并更改了一些内容以满足我的应用程序的需求,但我无法将这些更改推回我的存储库。
git status说我的子模块中有修改的内容,但我不能只使用git add该文件夹并推送它?
如果我尝试从子模块目录中推送,它实际上会尝试推送并拒绝我的访问,因为我不是该存储库的贡献者。
我希望能够不时获取新的更改,但能够保留并合并每次尝试更新子模块时修改的小代码。
为了实现这一目标,最好的方法是什么?我必须更改推送远程源吗?
我只找到了有关如何使用 git 子树拆分存储库的答案。但是,我明确想要子模块。
这是一个 Java Maven 项目。目前,一切都在一个 Maven 项目和一个存储库中。我的目标是实现这样的目标:
根存储库应该包含主要的 pom.xml、系统文档等。然后应该有几个子模块,一个用于实用程序库,一个用于主应用程序,等等。子模块是它们自己的 maven 项目,从根存储库中的主 maven 项目引用。根存储库将不包含任何源代码。
我可以从当前的 HEAD 创建所有新的东西,但对我来说重要的是提交历史尽可能完整。
我有这种情况git version 2.8.0.windows.1。
我有一个主项目的“发布”分支,每次发布新版本时我都会推送到那里。
这个项目有一个并行开发的子模块,所以我希望那里有很多提交。
项目主分支和子模块主分支(几乎)并行进行。
主提交 1 => 主提交 2 => 主提交 3 => 主提交 4
子模块提交 1 => 子模块提交 2 => 子模块提交 3 => 子模块提交 4
在这种情况下,主提交 4与子模块提交 4对齐。
当有人试图太晚获取发布分支时,就会出现问题。
因此,如果我在Master Commit 1处推送release分支,而当我们在Master Commit 4处时有人拉出 release 分支,我们就会出现错位(因为release与Master Commit 1相关,而现在我们在Submodule Commit 4 上)。
我看到的解决方案是以某种方式强迫子模块提交1至释放分支,但我不知道怎么还。
我知道一个很好的解决方案是在子模块上添加一个分支或标签,如这里所述。
但是我对子模块存储库没有权限,因此在那里设置分支或标签对我来说并不容易。
是否有任何解决方法可以强制在我的发布分支上提交特定的子模块 …
我有两个 git 分支,开发和重新设计需要合并。我有一个名为 library 的子模块,其更新正在由开发跟踪。当我运行 ' git merge' 时,它说库已被两者修改,即使我没有触及库子模块。当我单击 VS Code 中的库以查看冲突的更改时,我看到了以下内容:
diff --cc library
index 749618f9,589a7ae5..00000000
--- a/library
+++ b/library
Run Code Online (Sandbox Code Playgroud)
我尝试删除库文件夹并git submodule update在重新设计分支中运行“ ”,然后再合并没有成功。我在重新设计中将 ignore = all 添加到 .gitmodules 文件中,但没有用。如何摆脱与此子模块的合并冲突?
我知道以前有人问过这个问题,但我找到了所有答案,只是给我一个快速解决问题的方法,或者对它为什么会发生以及它是如何实际解决的一个令人困惑的解释。
这就是我遇到此错误的方式。我的一个队友在我们的 repo 中推动了对子模块的更改。从 master 拉取后git status,我们的子模块中显示了新的提交:
modified: path/to/submodule/submodule_name (new commits)
所以我决定通过运行来更新子模块
git submodule update path/to/submodule/submodule_name--这里是这个命令的文档
在这一点上我得到了错误
Fetched in submodule path 'path/to/submodule/submodule_name', but it did not contain ... Direct fetching of that commit failed
Run Code Online (Sandbox Code Playgroud)
谷歌搜索后,我发现了我的问题的不同答案:
超级用户是让我更接近理解问题的链接,而 github 只是给了我运行命令来修复它—— git submodule sync
现在,git status当我尝试更新服务器时,我仍然对更改如何显示在我的但不知道提交中感到有些困惑。怎么git submodule sync做才能使该提交可用?
我正在为具有多个 git 子模块的 Android 项目私有存储库设置 GitHub 操作,我的工作流程甚至无法通过结帐步骤!
我知道这可能是身份验证问题,但不知道如何解决!我想知道由于 CI 是用于 GitHub 的,它可以访问公司的所有存储库,并且不需要任何令牌或哈希键。
这是 yml 文件中的结帐步骤:
- name: Chrckout repo
uses: actions/checkout@v1
with:
submodules: true
lfs: true
Run Code Online (Sandbox Code Playgroud)
这是日志的某些部分(抱歉,由于项目机密性,我不得不混淆某些部分,但它应该是可读的):
2019-09-29T13:03:39.9185317Z ##[group]Run actions/checkout@v1
2019-09-29T13:03:39.9272863Z with:
2019-09-29T13:03:39.9273270Z submodules: true
2019-09-29T13:03:39.9273443Z lfs: true
2019-09-29T13:03:39.9273636Z ##[endgroup]
2019-09-29T13:03:40.9117862Z Added matchers: 'checkout-git'. Problem matchers scan action output for known warning or error strings and report these inline.
2019-09-29T13:03:40.9118799Z ##[add-matcher]/home/runner/work/_temp/git_edd66dd0-526a-44d1-97ad-a70a018bc61e.json
2019-09-29T13:03:40.9137013Z Syncing repository: ***/***-Android
2019-09-29T13:03:40.9145133Z ##[command]git version
2019-09-29T13:03:40.9145665Z git version 2.23.0
2019-09-29T13:03:40.9146108Z ##[command]git lfs version
2019-09-29T13:03:41.5663318Z git-lfs/2.8.0 (GitHub; linux …Run Code Online (Sandbox Code Playgroud) git continuous-integration github git-submodules github-actions
我正在尝试从 azure devops 中的另一个项目中签出子模块。
steps:
- checkout: self
submodules: true
persistCredentials: true
clean: true
Run Code Online (Sandbox Code Playgroud)
检出同一项目中的另一个存储库有效。
目标
在 REPOSITORY B 中添加为子模块 REPOSITORY A。
但是我得到了错误:
Cloning into 'E:/build/Agent5/_work/16/s/.azuredevops'...
fatal: could not read Username for 'https://dev.azure.com': terminal prompts disabled
fatal: clone of 'https://dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA' into submodule path 'E:/build/Agent5/_work/16/s/.azuredevops' failed
Run Code Online (Sandbox Code Playgroud)
如何在 Azure DevOps 存储库中使用 YAML 实现这一点?
我有一个带有子模块的项目。尝试将分支(名为release)合并到 中时master,git 识别出一些冲突并引发以下错误:
Fast-forwarding submodule path/to/submodule
Auto-merging path/to/submodule
error: add_cacheinfo failed to refresh for path 'path/to/submodule'; merge aborting.
Run Code Online (Sandbox Code Playgroud)
它完全停止了合并,因为没有显示它的证据git status,尽管我可以看到分支中的一些文件release。如果我运行git merge --abort它也会抱怨:
fatal: There is no merge to abort (MERGE_HEAD missing).
Run Code Online (Sandbox Code Playgroud) git ×10
git-submodules ×10
github ×2
azure ×1
azure-devops ×1
git-merge ×1
java ×1
jgit ×1
maven ×1
readonly ×1