git - Git:将不同的文件推送到各种遥控器
问题描述
我正在使用 git 扩展。我确实有各种分支机构,并且已经设置了各种遥控器。存储库中有超过 10k 个文件。现在我只需要将几个特定文件从这些遥控器(bitbucket)推送到一个。这些特定文件将定期推送。最好的工作流程是什么?
解决方案
Git 不推送文件。Git 推送提交。现在,提交确实包含文件。但这是一揽子交易:将提交想象成装满家具的卡车。您不能只提供一张茶几或椅子。整辆卡车必须去某个地方。(不要过分强调这个类比,否则它会分崩离析。)
要按名称将给定的提交推送到某个远程,请运行:
git push <remote-name> <commit-specifier>:<name>
您这边的commit-specifier
部分可以是分支名称、标签名称、原始提交哈希或其他任何内容。remote-name
可以是您的任何远程名称。name
冒号右侧的部分是remote 中的名称,任何使用该其他 Git 存储库的人(在远程上)都将通过它找到您使用您发送的提交commit-specifier
来选择提交。
因为提交是历史,如果远程没有提交,发送提交将自动发送所有早期提交。他们将得到每一个承诺,包括那个承诺。如果遥控器已经拥有它们——这很常见——它们就不需要这些提交。
Git 协议使两个 Git 能够相互交谈并找出他们有哪些提交。当接收 Git 说我已经提交a123456
到发送 Git 时,通知发送 Git 接收者不仅有那个提交,还有所有导致并包括那个提交的提交,因为提交是历史,我们总是1发送所有完整历史所需的提交。
发送 Git 将看到接收 Git 不仅包含所有这些提交,还包含该提交中的所有文件。因此,发送者可以通过完全忽略任何匹配的文件来压缩他发送的任何提交,并将新文件压缩为delta 编码的指令,告诉接收者如何从他已有的文件中构建这些文件。这些压缩指令非常适用于纯文本文件。对于预压缩的二进制文件,例如 jpeg 图像,它们往往效果不佳。
1此规则的例外是浅存储库,这会使事情变得复杂。一个用git clone --depth
. (Bitbucket 上的接收存储库不会是浅层存储库。)
推荐阅读
- sql - SQL 问题在同一个表中查找值
- python - 如何使用网格居中按钮?
- wso2 - WSO2 API Manager:需要使用 swagger 文件从后端创建 API
- javascript - 如何从本地文件返回 React 中的 JSON 数组并让它映射到我的所有项目?
- arrays - 如何解压/解构 D 中的数组?
- ruby-on-rails - 如何在 Rails 中创建多对多关系
- angular - 为什么我保存时 NgModule 中的项目会重新对齐?
- python - 无法在 Linux 中启动 Jupyter 实验室
- c# - 如何在 mvc 中创建一个视图,该视图填充数据库表中的问题列表并针对每个问题添加下拉列表?
- php - 为什么提交按钮只是重新加载我的页面而不是发送信息?