如何解决Git:将不同的文件推送到各种遥控器
我正在使用 git 扩展。我确实有各种分支机构,并且已经设置了各种遥控器。存储库中有超过 10k 个文件。现在我只需要将几个特定文件从这些遥控器(bitbucket)推送到一个文件。这些特定文件将定期推送。最好的工作流程是什么?
解决方法
Git 不会推送文件。 Git 推送提交。现在,提交包含文件是真的。但这是一揽子交易:把提交想象成一辆装满家具的卡车。您不能只提供一张茶几或椅子。整辆卡车必须去某个地方。 (这个比喻不要太用力,否则它会分崩离析。?)
要将给定的提交按名称推送到某个远程,请运行:
git push <remote-name> <commit-specifier>:<name>
您身边的 commit-specifier
部分可以是分支名称、标签名称、原始提交哈希或其他任何内容。 remote-name
可以是您的任何远程名称。冒号右侧的 name
部分是 远程中的名称,任何使用其他 Git 存储库的人都可以通过该名称在远程上— 将找到您使用 commit-specifier
发送的提交以选择提交。
因为提交是历史,发送提交将自动发送所有早期提交,如果远程没有它们。他们将获得每一次提交,包括那个提交。如果远程确实已经拥有它们——这很常见——他们将不需要这些提交。
Git 协议使两个 Git 能够相互交谈并找出他们有哪些提交。当接收方 Git 说 I have commit a123456
到发送方 Git 时,这会通知发送方 Git 接收方不仅拥有该提交,而且所有导致和包括那个提交,因为提交是历史,我们总是1发送完整历史所需的所有提交。
发送方 Git 将看到接收方 Git 不仅拥有所有这些提交,而且还有 中 提交的所有文件。因此,发送者可以通过完全省略任何匹配的文件来压缩他正在发送的任何提交,并将新文件压缩到 delta-encoded instructions 告诉接收者如何构建他已经拥有的文件中的那些文件。这些压缩指令适用于纯文本文件。对于预先压缩的二进制文件,例如 jpeg 图像,它们往往效果不佳。
1这个规则的例外是浅仓库,这让事情变得复杂。用 git clone --depth
制作这些。 (Bitbucket 上的接收存储库不会是浅存储库。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。