使用 git 子树时如何添加特定文件夹?

2024-05-23

我正在开发一个复杂的 Ionic 项目。我正在开发的许多组件和提供程序都是通用的,可以在我公司正在进行的其他项目中使用。这在软件开发中很常见。这是我提出的 Git 工作流程(该图显示了分支):

my-company-library-repo ----
                            |_ component 1 feature branch
                               |_ company component 1 feature branch testbed
                            |_ component 2 feature branch

最终的组件代码(只是一个.ts or .js在测试台中开发的文件)被推送到组件功能分支。测试台代码保留在测试台分支中。此外,功能分支中还包含该组件可能附带的任何文档。

现在,在应用程序存储库中,我使用以下命令将功能分支添加为子树:

git subtree add -P <destination-dir/feature> --squash <my-company-library-repo-url> <feature-branch-name>

这给了我以下内容(该图显示了文件夹结构):

my-app-repo-------
                  |_ company-library-feature-subtree

这应该只包含.js or .ts它的文档位于它的子文件夹中。我只得到这个部分工作。当它拉动子树时,它只拉动组件及其文档文件,但这些文件被拉入一个很长的子目录列表,如下所示:

my-app-repo/src/feature-branch/feature/src/app/providers/...

这使得使用该库变得困难,因为文件被放置在很多目录(未使用的目录)深处。

那么,当我将 2 个文件从 feature-testbed 分支推送到 feature 分支时,我怎么能不拉动它们的整个目录结构呢?


在添加子树之前my-app-repo,从中分割出一个子树my-company-library-repo:

# In my-company-library-repo
git subtree split -P src/app/providers/... -b feature-new feature

这将创造一个新的历史,内容如下:src/app/providers/...在回购协议的根目录下,从feature分支,并创建分支feature-new在这段历史的结束时。

然后将该新分支添加为子树my-app-repo:

# In my-app-repo
git subtree add -P <destination-dir/feature> --squash <my-company-library-repo> feature-new

现在您将拥有以下内容src/app/providers/... at <destination-dir/feature>.

您没有提到是否会定期重复此过程,但这也是可能的。来自git-subtree手册页:

完全相同的历史记录的重复分割保证是相同的(即产生相同的提交 ID)。因此,如果您添加新的提交然后重新拆分,新的提交将作为提交附加到您上次生成的历史记录之上,因此'git merge' 朋友们就会按预期工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 git 子树时如何添加特定文件夹? 的相关文章

  • 如何使用 API 和 C# 将文件从 azure DevOps 服务器下载到指定路径

    我正在尝试使用 API 从 azure Devops 服务器下载文件 API 给出了成功响应 但是没有下载任何文件 如果我们删除格式参数 我们将获得带有文件链接的响应 单击该文件不会下载 示例代码 var personalaccesstok
  • 使用两个帐户推送到 Git

    我跟着这个tuotrial http code tutsplus com tutorials how to work with github and multiple accounts net 22574关于如何在同一台计算机上拥有两个单独
  • git 分叉是如何工作的?

    所以我登录了 github 并 fork 了一个项目 每次原始存储库更新时 我的分叉存储库都会更新吗 或者我应该每次都从原始存储库进行分叉 这样我就不会错过对原始存储库所做的任何新更改 分叉是存储库的副本 分叉存储库允许您自由地尝试更改 而
  • 为什么 git mergetool 说“没有文件需要合并”?

    我正在尝试将 BeyondCompare4 配置为 git 中的 difftool 和 mergetool 我使用的是 git 版本 2 5 0 windows 1 到目前为止 BeyondCompare4 作为 difftool 工作得很
  • 签出现有的远程分支

    我见过不同的方法来检查现有的远程分支 假设我的朋友推送了新分支 bigbug 并且我想签出并将我的本地工作副本切换到该分支 我有以下选项 1 git checkout b bigbug origin bigbug 2 git checkou
  • .gitignore 文件夹内容[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上忽略 Git 存储库中的目录 https stackoverflow com questions 343646 ignoring directories in git repos
  • 无法将 android“gen”文件夹提交到 Git

    我在 eclipse 中使用 EGit 为我正在开发的 Android 项目提供 Git 支持 问题是 将我的项目提交到本地存储库后 我意识到 gen 文件夹没有被提交 因此 当我从 Git 存储库获取最新源代码后尝试在另一台计算机上打开该
  • 将 svn 存储库添加到现有的 git 存储库中?

    我知道你可以使用 git svn init 来跟踪 svn 存储库 但这是为了你想创建一个全新的存储库 我的情况是 我目前已经有一个现有的 git 存储库 并且希望通过将 svn 存储库设为我当前 git 存储库中的远程分支来跟踪 svn
  • 如何获取第一次提交的 Git diff?

    我创建了一个存储库 在其中创建了一个文件 在文件中放入了一些内容 然后提交了该文件 现在 我想查看该提交的差异 理想情况下应该显示添加的文件以及添加到其中的行 然而 git diff HEAD HEAD回报fatal ambiguous a
  • 有关多个远程存储库的 Git 状态

    我有一个脚本 如果我忘记在 40 多个存储库中提交或推送一些代码 它会通过电子邮件向我发送提醒 在我的两个项目中 我遵循了这些帖子中的答案 其中我设置了 git push 来推送到多个存储库 从多个远程位置拉 推 https stackov
  • 主存储库和本地存储库在同一台机器上

    我是 Git 新手 我已经在 Linux 服务器中创建了一个主存储库 同一个服务器将由 5 组 每组 3 个用户 使用 我想为每个组创建一个本地存储库 小组成员又应该为每个人创建一个本地存储库 使用内容并将修改提交到小组的本地存储库 我该怎
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • git 命令显示所有(轻量级)标签创建日期

    是否有一个衬垫可以向我显示所有 git 轻量级标签的创建日期 就像是 git show tags format date 我在这个发现link http osdir com ml git 2009 05 msg01404 html适合我需求
  • 在 GitHub 上执行拉取请求时避免不需要的合并提交和其他提交

    我在 Github 上分叉了一个项目 令远程上游为upstream我的远程存储库是origin 我当地的master分支设置为跟踪远程master分支 然后我在本地添加了一些东西master 时不时与上游汇合 直到今天我想发出pull re
  • Git 中的合并冲突是由什么构成的?

    git 如何确定特定合并存在冲突以及冲突是什么 我的猜测是这样的 如果正在合并的两个提交有一个共同的父提交 并且如果它们都更改了父提交的 X 行 那就是冲突 让我的理解变得复杂的是 更改 X 行 可能意味着用几行新行替换它 但这仍然显示为一
  • 如何查看 github 的 SSH 密钥?

    我最近收到一封来自 Github 的电子邮件 要求我检查我的 SSH 密钥 请检查您的钥匙并确保您 认出他们 如果您有任何疑问 请拒绝钥匙并 上传新密钥 如何在 ubuntu 11 10 上使用 git 检查我的密钥 您可以按照 GitHu
  • Visual Studio Code 内置故事,用于查看 git 提交历史记录并对其内容进行比较

    In this https stackoverflow com questions 37899765 how can i view the git history in visual studio code 60013101 noredir
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 致命:无法将 HEAD 解析为有效引用

    我正进入 状态fatal Failed to resolve HEAD as a valid ref 每当我尝试承诺时 我努力了 echo ref refs heads master gt git HEAD 但它不起作用 也尝试过 git
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中

随机推荐