Git:如何使外部存储库和嵌入式存储库作为通用/独立存储库工作?

2024-05-13

我有一个大项目(比方说A repo),其中有一个子文件夹来自B repo。当我提交时,我会遇到如下警告A repo

warning: adding embedded git repository: extractor/annotator-server
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint:   git submodule add <url> extractor/annotator-server
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint:   git rm --cached extractor/annotator-server
hint:
hint: See "git help submodule" for more information.

我见过git-submodule and git-subtree:

在另一个 git 存储库中维护 Git 存储库 https://stackoverflow.com/questions/36236484/maintaining-git-repo-inside-another-git-repo

https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree

但我不喜欢它们,因为它们需要额外的配置。


我想要的是,例如:

结构如:

A/
--- a.py

--- B/
--- B/b.py

当我改变时B/b.py .

  1. 如果我在路上A/ , git add可以检测到B/b.py改变了,git push只将其提交给 A 存储库。

    git add .   (would add changes under A/  )
    git push   (would push changes under A/  )
    git pull   (would pull changes under A/  )
    git clone XXX:A  (would clone all files under A/ ,    A/B/ is just looks like plain folder with all files, not a repo )
    
  2. 如果我在路上A/B/ , git add只添加B/b.py对 B 存储库的更改,以及git push只将其提交给 B 存储库。

    git add .   (would add changes under B/ , but not add changes to A repo)
    git push   (would push changes under B/ , but not push changes to A repo)
    git pull   (would clone changes under B/ ,  )
    git clone XXX:B  (would clone all files under B/  )
    
  3. 一旦我想在另一台机器上同步A和B,就这样做

    git clone A
    rm -rf A/B/
    git clone B ./B
    git add . && git commit 'sync with B'
    

换句话说,A 和 B 充当独立的存储库。

但事实是,A repo 将 B repo 视为子模块:

A repo https://github.com/eromoe/test https://github.com/eromoe/test

B repo https://github.com/eromoe/test2 https://github.com/eromoe/test2


如何强制存储库跟踪其下的所有文件A/和 B 存储库跟踪下的所有文件A/B/?我希望 A 和 B 充当独立的存储库,无需任何其他配置。


您可以使用以下命令将文件从 test2 存储库添加到测试存储库,如下所示:

# In local test repo
rm -rf test2
git clone https://github.com/eromoe/test2
git add test2/
git commit -am 'add files from test2 repo to test repo'
git push

Note:

你应该使用git add test2/(带斜线,不带斜线git add test2).

git add test2/会治疗test2文件夹及其文件作为测试存储库的普通文件夹和文件(创建模式100644).

git add test2会治疗test2文件夹作为测试存储库的子模块(创建模式160000).

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

Git:如何使外部存储库和嵌入式存储库作为通用/独立存储库工作? 的相关文章

  • git | git将旧提交移至另一个分支的过去

    我过去错误地进行了分支 并且在另一个分支的开头留下了一个提交 03431cb HEAD gt bar a2 d332e4d foo b2 9b29ae3 b1 4656a98 a1 6ebca20 master root 我怎样才能移动a1
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • 从另一个分支或从 master 创建 Git 分支?

    所以我是 Git 新手 我最近从存储库中提取了主分支的新版本 我创建了一个branch 1 获取某个功能并将其推送到存储库并创建拉取请求 现在我创建了一个新的branch 2 具有另一个功能 但由于我的拉取请求尚未合并 再次拉取 maste
  • 为什么我必须使用“git commit -a”而不仅仅是“git commit”?

    我正在尝试了解 Git 的复杂性 我使用 git clone url here 从 GitHub 上下载了一个存储库 我做了一些更改 尝试使用 git commit 来提交它们 这似乎没有将更改推送到我的本地存储库 在本地目录 git 中
  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 为什么 git-cherry pick 没有说要提交什么?

    我对以下问题进行了很多搜索 但无法获得任何实质性信息 我创建了一个临时分支 202116 并尝试对 gerrit 202116 进行挑选 并收到以下消息 为什么我无法挑选此提交以及为什么会收到此错误 lt gt git fetch ssh
  • 如何在 Mac OS X 10.9 上安装和使用最新的 Git?

    我从 sourceforge 下载了 Git 2 4 3http git scm com download mac http git scm com download mac对于我的 Macbook Pro OS X 10 9 5 然后安装
  • Git 分支名为 origin/HEAD -> origin/master

    我对 Git 还很陌生 但仍在掌握它的窍门 我最近刚刚开始与分支机构合作 遇到了一些问题 我有两个开发系统 一个 Ubuntu 桌面和一个 MacBookPro 我在新的环境中做了很多工作organizationsUbuntu 系统上的分支
  • git jenkins 中未找到存储库

    我正在使用 jenkins 2 64 并安装了最新的插件 我试图在 jenkins 中设置 git 存储库并给出凭据 但给出错误无法连接存储库 状态代码为 128 Cloning repository https github com so
  • 是什么让 DVCS 中的合并变得如此简单?

    我读于乔尔谈软件 http www joelonsoftware com items 2010 03 17 html 通过分布式版本控制 分布式部分实际上不是 最有趣的部分 有趣的是 这些 系统根据变化来思考 而不是 就版本而言 and a
  • 用于维护项目扩展分支的 Git 工作流程?

    我们在 GitHub 上分叉了一个 OSS 项目 并向其添加一些自定义扩展 我们希望将我们所做的一些更改发送回原始项目 错误修复等 但其他更改是原始项目维护者目前不感兴趣的功能扩展 我正在尝试找出管理这种情况的最佳工作流程 我希望我们的主分
  • git pull origin master 返回致命错误:无效的 refspec

    问题是这样的 每当我这样做时 git pull https github com username reponame github io git 接下来是网址 我没有遇到任何问题 但是当我这样做时 git pull origin maste
  • 如何在 git 中仅获取唯一的提交

    我想获取所有分支中唯一提交的列表 但是如果有人在分支中使用 rebase 则会提交松散的父项 如何解决这个问题呢 如何获取进行独特更改的提交列表 I use git log oneline graph cherry pick left ri
  • 我应该在 Heroku 上部署 Ruby on Rails 应用程序吗?

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于我自己的一些情况 我今年 24 岁 去年从北卡罗来纳州立大学毕业 获得了分析硕士学位 统计 数学之类的 我没有很强的编程背景 这对我的问题非
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • git Push heroku master 因“HTTP 400curl 22 请求的 URL 返回错误”而失败

    我正在尝试推送仅显示 你好 世界 的 Rails 应用程序 然后我遇到了如下错误 我想知道如何解决这个问题 git推送heroku大师枚举对象 88 完成 计数对象 100 88 88 完成 增量压缩最多使用 4 个线程 压缩对象 100
  • Sublime 中的文件内容不会因 Git 分支更改而更改

    如果在 Sublime text 2 中打开一个文件 然后切换到终端中对该文件进行更改的分支 则在通过单击编辑器选择编辑器之前 文件内容不会在 Sublime text 2 中更新 如何自动神奇地改变它 Sublime Text 没有任何内
  • 获取 Github 上已编译二进制文件的链接

    如何在 Github 上添加已编译二进制文件的链接 您可以使用 URL 链接到 GitHub 存储库中的特定文件http github com
  • 无法更改 GitHub Pages 中的源分支

    我为 GitHub Pages 创建了一个简单的网站 该网站的源位于 master 分支中 生成的网站 我希望看到发布的 位于 gh pages 分支下 我希望能够在设置中更改网站的来源 但是设置是灰色的 我无法更改它 请参见下面的屏幕截图
  • 如何删除所有意外添加到git系统的本地文件

    我是 git 系统的新手 我可能犯了一个错误 将我所有的本地文件集成到 git 系统中 当我说出现以下错误时 我使用 vs代码编辑器 并放弃所有更改 Git fatal You are on a branch yet to be born

随机推荐