问题标签 [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 子模块?
这就是问题所在:我有很多代码,包括我需要版本化的 GUI 艺术品,以便忠实地重新创建软件产品。我也在 Windows 和 Mac 上工作。我正在处理的实际代码每天都会更改,非常小。但是,在其构建之前,所有相关资源总计约为几 GB。
从我的在线研究来看,我需要使用 git-subtree 或 git-submodule 来保持我的 git 存储库快速。
我敢肯定,你们中的很多 git 用户都面临着类似的问题,并且面临着同样的决定。
您使用了哪种方法,您遇到了哪些问题?
git - git push 一个子目录到另一个主仓库
我有一个很大的主项目,其中有几个目录作为子树。
我想将一个特定子树中的更改推送到它的原点,这是一个单独的存储库。
问题似乎是,我要推送的当前子树最初并不是来自我要推送到的存储库。它来自不同的存储库,通过我通过谷歌搜索找到的子树指南。它看起来非常相似。
大项目布局,important_subtree
我担心的事情在哪里。
并且important_subtree
与该回购“密切相关”:
现在~/devel/bigproject/important_subtree/efg.txt
已经改变了,我想将 important_subtree推到 repo 上~/devel/important
。所以之后~/devel/important/efg.txt
也有变化。
我唯一能做的就是将bigproject中的所有内容都推送到important中,这显然不是我想要的。只应推送子树中的更改。
python - 如何在没有符号链接的情况下使用 git 和 buidout 构建具有共享子应用程序的 python 项目
我有多个项目与其他项目共享子应用程序。在项目目录中工作时,我希望能够对应用程序进行更改、更新并将这些更新拉入第二个项目。
要求:
- 不使用符号链接(我的 IDE 的调试器不能很好地使用它们)
- 无需编译/重新运行脚本。我想对应用程序进行更改,而无需重新运行脚本/构建。
- 应用程序必须位于项目文件夹中。
这是结构:
目前我正在为此使用 git-submodules;缺点是无法链接到 repo 的子文件夹。我最近阅读了关于子树的内容,这会更好吗?
理想情况下,我想使用buildout,但我还没有找到一种不使用符号链接来实现此目的的好方法。如果有办法做到这一点,请告诉我。
任何建议将不胜感激。
git - git reports merge conflict with no changes, empty lines (using git-subtree)
I'm testing the use of git-subtree to merge a library repo into a bigger project. It seems great in principle. Sometimes when I do a "git subtree pull" I get merge conflicts like this:
That's for a change that was made in the library repo, merging into a file that has not been modified locally. Or another example, where I added a line in the local project repo, but in a file that is part of the subtree being merged:
Why would git report these as merge conflicts, but the region reported as the conflict is empty? Any way to prevent it?
These are easy enough to resolve, but it messes up the git-subtree workflow
git - 将 git 存储库中的文件夹拆分为单独的分支
我终于将我们的 CVS 存储库迁移到了 git。不幸的是,我们没有在 CVS 中使用分支,但是不同的版本/分支被分成了不同的子目录。
IE我们有如下目录结构:
有没有办法将 src 子目录中的 3 个版本分成单独的分支,而不是为每个版本保留目录?
我在 Stack Overflow Question 4877053上发现了同样的问题,其中建议使用 git-subtree,但即使在阅读了 git-subtree 的手册之后,我也不明白如何使用它来解决我的问题。
有人可以给我更详细的解释甚至其他解决方案吗?
我对 git 很陌生,也许这就是我不理解子树手册的原因;-)
非常感谢您的所有回答!
git - 在主项目存储库中包含实用程序存储库并允许自定义
我正在努力改善某些项目中的源代码冗余,但我遇到了一个问题。
假设我有一些实用程序可以在更多项目中使用。示例:构建脚本和测试脚本足够通用,可用于所有项目,但也有一些可以为每个项目定制的配置文件。
我想在一个地方维护构建脚本逻辑(修复错误并添加改进)并在所有使用它的项目中轻松进行更改,但也不会破坏配置文件。
我知道我不能对 git 子模块执行此操作,因为配置文件需要提交到实用程序存储库而不是项目存储库。
我也一直在查看git-subtree,但我不确定它是否在做我想要的。
以前有人涉足这个吗?
git - 在 git repo 中推送子树
我对 Git 很陌生:我来自 SVN,在那里我发现 :external 功能非常强大。在 Git 中我没有找到类似的东西:
- 子模块非常适合添加并不总是需要的项目模块。它们必须在 repo 克隆后初始化,并且不能只包含原始项目的子目录。
- 子树非常适合添加库(它们也允许包含子目录),但推动它们是一件非常痛苦的事情。
所以场景是这样的:我有一个项目,我想在其中包含一些库。我希望有可能更改所有这些库并将它们推送到自己的存储库中。此外,其中一些库是较大项目的子目录(例如,如果一个项目还包含演示或自述文件,我不会在我的项目中包含这些目录)。
我怎样才能做到这一点?
我试过了:
- http://progit.org/book/ch6-7.html + http://posterous.timocracy.com/git-sub-tree-merging-back-to-the-subtree-for(只合并一个子目录'不允许,否则我不能只看到它);
- http://www.tipstank.com/2011/02/21/git-subtree-notes-and-workflows/(同上,不处理子目录包含);
- http://psionides.eu/2010/02/04/sharing-code-between-projects-with-git-subtree/(看不到推送);
- http://h2ik.co/2011/03/have-fun-with-git-subtree/(看不到推送)
好吧,如果您已经达到了这一点,感谢您的耐心等待,现在我想尝试其他方法,因为现在我的结论是:“Git 中不允许子树推送”ç_ç
django - 自定义 Django 应用程序和贡献/合并上游的工作流程
如果需要对代码进行少量更改,如何将 3rd 方 Django 应用程序拉入我的 Djano 项目?我需要能够:
- 合并上游更改
- 提交新功能/模组的拉取请求
- 在多个项目中使用修改后的应用
- 能够使用我的 Django 项目部署修改后的应用程序
- 保持私密(可选)
现有的半解决方案
在这个话题上似乎有很多混乱。我似乎提出的方法是:
方法# 1 - pip/virtualenv - 将项目保存在单独的 repo 中并将其添加到 python 路径。优点:将代码干净地划分为单独的项目可能总体上更干净,不太复杂 缺点:在本地开发时需要更复杂的管理来更新依赖关系。
2 - git submodule - 使用 submodules 模块将代码拉入你的 Django 项目目录。优点:似乎确实有效,而子树不能很好地处理这个 Django 应用案例缺点:更复杂的部署
3 - git subtree - 使用 subtree 模块将代码拉入您的 Django 项目目录。我自己对此进行了更多探索,您可以在此处查看http://projects.madteckhead.com/django-superproject-3rd-party-git-repo-subdirectories-mapped-mapped-to-apps/ 优势:代码和历史记录保留Django 项目,易于部署,并降低了协作者的复杂性。缺点:似乎无法将子目录或存储库“挂载”到项目的子目录中,如果可以的话……我无法弄清楚如何合并上游更改。
4 - 将有问题的第 3 方应用程序复制到 django 项目应用程序目录中。优点:简单缺点:不能轻易合并更改,或提交请求请求
问题是 Python 包实际上在 repo 的子目录中有应用程序。例如thirdpartyapp/thirdpartyapp/setup.pythirdpartyapp/thirdpartyapp/[所有感兴趣的代码都在这里]
问题
任何人都可以阐明如何最好地将多个 3rd 方 django 应用程序合并到一个 django 项目中,对它们进行更改/合并上游更改。
我真的很感激一个干净的工作流程,它是我回馈我在 Django 中使用的应用程序的主要障碍之一。
非常感谢,
git - 删除分支上的 Git 提交
如何删除分支的提交master
?
我通过Git subtree添加了一个大型库,以及非常丰富的提交历史(并且早于我的代码)到子目录。我想追溯压缩整个历史记录,但仍然能够合并到 library 的新提交中。
我尝试了各种组合,git rebase
但我从未得到预期的结果 [*]。
我的存储库看起来像:
我希望它看起来像:
或者:
[*]:
git rebase --onto C E master
git checkout F; git rebase --onto C E master
git - 为什么我的提交越多,Git 子树推送的时间就越长?
我一直在使用 git 子树扩展 ( https://github.com/apenwarr/git-subtree )。我使用“--squash”来清理主项目的日志,我的步骤是这样的:
将lib添加到主项目中
git subtree add -P sub/libdir --squash lib_remote master
从 lib 获取更新
git subtree pull -P sub/libdir --squash lib_remote master
将更改推送到 lib_remote
git subtree push -P sub/libdir --squash lib_remote master
它对我来说效果很好(主要项目和库,有一个很有意义的历史)。问题是 git subtree push 的时间,越来越长。
我使用 git-subtree 的目的与 Screndib 几乎相同,他们问 git-subtree 没有保留历史记录,所以我无法推送子树更改,我该如何解决这个问题/以后避免这个问题?
我想,当使用 --squash 时,每次处理 push 时, git subtree 都需要搜索自“subtree add”以来的整个历史记录。
如何减少子树推送的时间?或者让它更有效地工作,而不是整个历史,只处理自上次 git subtree push(或 pull)以来的更改?