问题标签 [git-subtree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 从 git 子树创建新的存储库
当使用git subtree
一个完整的新树时,包括一个新的第一次提交,是在创建它的同一个存储库中创建的。这意味着此时存储库内部包含两个完全独立的树,根本没有共同的父级。
将这棵新树移到它自己的存储库中的好方法是什么?
git - git-subtree 稳定用于具有大量和深度嵌套子树的存储库?
我正在维护一个 CMS/框架的仓库,它目前使用了很多 (25) 个子模块。由于子模块的所有缺点,我宁愿切换到 Avery Pennarun 的 git-subtree (注意:不是git subtree 合并策略),但我在这一点上犹豫不决,因为我想知道 git-subtree 是否真的稳定像我这样的“大型回购/大量子树/深度嵌套/大量通量”场景。
由于我必须以艰苦的方式学习,这git subtree merge strategy
完全无法处理我的 repo/szenario,我想事先评估我的 git-subtree 几率。
git - Git子树:仅使用子存储库而不是整个存储库
我有一个使用一些 3rd 方库的项目。所以目录结构是这样的:
这些库位于单独的存储库中。因此,如果我想为 3rd 方库使用 git 存储库,我可以这样做:
但是,在 lib1.git 存储库中,我只需要一个 bin 文件夹。它还包含文档、示例等文件夹。我怎样才能只将我的存储库与 lib1/bin 文件夹而不是整个存储库“连接”?这甚至可能吗?
git - 使用分支增量提取子树
我git-subtree
用来从我的项目中提取目录。
鉴于这就是我希望开始项目的方式(特别是 no ),我如何才能在连续运行时--rejoin
仅将更改从origin/master
to拆分?SubProject
对于较小的项目,这一直运行良好。我可以忍受大约 5 秒的时间来拆分项目。但在较大的存储库上,这可能需要相当长的时间。我已经看到每次拆分最多需要五分钟。我想合作的一些项目在一个存储库中有超过 45 个子项目。
我尝试了很多我认为可能有效的方法,但每一种都以某种方式失败了。我的要求是:
- 不得以任何方式弄乱
origin/master
(所以大多数情况--rejoin
下是不可能的) - 它不能添加额外的合并提交(想想:
--ff-only
当从 获取新更改时origin/master
) - 存储库
SubProject
必须具有稳定的提交 ID。这意味着在对 进行一次或多次增量更新后SubProject
,如果我重新运行本文顶部的原始命令,它的历史记录中应该具有相同的提交 ID。 - 它必须是自动化的,不需要人工干预
我不害怕复杂的解决方案,但它需要自动化。因为历史改变而失败是好的;此时脚本可以退回以从头开始构建整个事物。在这种情况下,用户知道他们做了什么,所以他们可以从头开始经历一个非常漫长的重建过程。:)
--重新加入
我尝试使用--rejoin
并保留一个额外的origin/master
around副本,作为--rejoin
. 我在这里遇到的问题是我无法干预git rebase origin/master
或git merge --ff-only origin/master
不干预。我需要能够以自动化的方式做到这一点,所以这是不可接受的。
合并提交
我能够让它按我的意愿工作,git merge origin/master
但它导致了合并提交。由于此合并提交永远不会上游,因此我认为无法预测未来的历史,因此git subtree split
原始环境中的新鲜事物将无法重现相同的确切历史。我可能错了。如果是这样,请向我解释这将如何安全。:)
提交范围
我尝试使用提交范围,并且能够创建一个新的子树拆分,SubProject
其中仅包含从某个时间点到HEAD
. 这可能会起作用,除非它看起来好像生成了一组新的提交 ID,所以我认为这不是一个选项。
git - git pull subtree 删除所有内容
我正在尝试利用 git 中的子树功能,我可以在其中拥有一个引用另一个 repo 的 repo,因此似乎拥有两个 repos 的所有文件。我在这里和这里阅读了一些介绍,并尝试关注它们。
所以我在 git hub 中有两个仓库。我这样做
所以现在我查看我的文件系统,我看到了来自两个 repos 的所有文件,一切都很好。然后我做
似乎两个本地存储库中的所有内容都被删除了。事实上首先它确实
在所有文件上,然后它似乎进行了合并,您可以在其中看到所有带有红色和绿色 + 和 - 的文件,然后它确实
对于所有文件
所以我不确定我做错了什么,但很明显这是有问题的。
任何帮助,将不胜感激
=== 编辑抱歉,我一直在更改命令,此时我有点担心,但我认为这是我正在使用的语法
git - git subtree 可以包含子树吗?
我正在编写需要一些 java 类的 R 包。我们在一个 python 项目中找到了这些 java 类(许可证兼容,原作者支持)。我们不想包含整个 python 项目,只有一个子目录,幸运的是我们需要的一切。git subtree 能否以使其从原始(python)回购中推/拉成为可能的方式做这样的事情?我知道一种解决方案是将java部分分解到一个单独的项目中,并同时拥有python和R项目子树。不幸的是,我们对原始项目没有那种控制权。谢谢
git - git 子目录中的 git init
我有一个 git repo,它有一些子目录:
现在我想otherstuff
和朋友分享,我打算用 bitbucket 来做这个。他们应该能够克隆它并推送更改,otherstuff
但我不希望他们能够访问src
,mystuff
(甚至看不到它们存在)。
我该怎么做?我几乎进入cd ~/src/otherstuff
并做了git init
,git remote add origin ssh://git@bitbucket.org/wim_glenn/...
但是当它已经处于版本控制之下时,再次执行 git init 有什么不好的地方。
git - 跟踪通过`git subtree`合并的外部git repos
我正在尝试建立一个良好的模式来管理跨多个项目的共享代码和外部依赖项。由于其他地方有详细记录的原因,使用子模块有很多陷阱,我倾向于远离它。从 git 1.8 开始,子树命令是内置的,似乎涵盖了我关心的很多内容,但仍然有一些核心场景似乎缺失。我希望有人在填补空白的官方子树功能之上编写了一些脚本。
我想要的似乎缺少的是:
- 跟踪通过子树添加的内容以及指定的分支
- 做事的能力
git subtree pull-all
和push-all
- 作为最后的一部分,能够指定子树是否应锁定到特定提交或分支中的最新提交。
这些东西是否内置在命令中,而我只是在使用它们时遗漏了一些东西?我还要求这需要在 Windows 上运行,以防影响任何事情。
谢谢,
git - 合并简单的上游更改时,Git Subtree Merging 报告冲突
我开始学习 git 1.8.2 中的子树合并。我创建了一个简单的示例来测试对迁移到主项目的第三方 repo 的更改。
我正在关注6.7 Git Tools - Subtree Merging示例。
“子”项目作为子目录包含在“主”项目中。
在我对“子”项目进行更改后,当我尝试将更改合并到“主”项目中时,git 会报告冲突。
测试总结
- 为项目'main'和'sub'创建了repos(sub而不是rack)
- 将名为 sub_remote 的远程添加到引用 sub 的 main
- 使用 sub_branch 跟踪 sub_remote
- 在“子”项目的文件中更改并提交一行
- 将更改从 sub 拉到 main/sub_branch
- 将 main/sub_branch 合并到 main/master。
合并因冲突而失败。Merge 对要保留哪个版本的更改行感到困惑。
完整的测试脚本
git - 如何删除已删除的 git 子树文件夹的历史记录?
我使用 git-subtree 添加了一个 git 存储库。问题是我在使用 git-subtree 添加存储库之前进行了硬重置。现在提交历史仍然在存储库中,但它与主服务器断开连接。
知道如何删除它吗?我试过 git rm --cached 没有运气。