Git - 将代码推送到两个遥控器

2024-01-22

I have two远程 git 存储库。origin and github

我推我的分支devel到两个存储库。

git push -u origin devel
git push -u github devel

但当我这么做的时候。git push它只会被推到github.

无论如何,我是否可以设置我的两个遥控器,以便我可以使用一个命令将更改推送到两个存储库?


在最新版本的 Git 中,您可以添加多个pushurls 表示给定的遥控器。使用以下命令添加两个pushurl给你的origin:

git remote set-url --add --push origin git://original/repo.git
git remote set-url --add --push origin git://another/repo.git

所以当你推动origin,它将推送到两个存储库。

UPDATE 1: Git 1.8.0.1 and 1.8.1 (and possibly other versions) seem to have a bug that causes --add to replace the original URL the first time you use it, so you need to re-add the original URL using the same command. Doing git remote -v should reveal the current URLs for each remote.

更新2:Git 维护者 Junio C. Hamano 解释了它的设计方式。正在做git remote set-url --add --push <remote_name> <url> adds a pushurl对于给定的遥控器,覆盖推送的默认 URL。但是,您可以添加多个pushurls 对于给定的遥控器,然后允许您使用单个遥控器推送到多个遥控器git push。您可以在下面验证此行为:

$ git clone git://original/repo.git
$ git remote -v
origin  git://original/repo.git (fetch)
origin  git://original/repo.git (push)
$ git config -l | grep '^remote\.'
remote.origin.url=git://original/repo.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

现在,如果您想使用单个命令推送到两个或更多存储库,您可以创建一个名为all(根据建议@亚当·纳尔逊 https://stackoverflow.com/users/26235/adam-nelson在评论中),或继续使用origin,尽管后一个名称对于此目的的描述性较差。如果您还想使用origin,跳过以下步骤,并使用origin代替all在所有其他步骤中。

所以让我们添加一个名为all我们稍后在推送到多个存储库时会引用:

$ git remote add all git://original/repo.git
$ git remote -v
all git://original/repo.git (fetch)               <-- ADDED
all git://original/repo.git (push)                <-- ADDED
origin  git://original/repo.git (fetch)
origin  git://original/repo.git (push)
$ git config -l | grep '^remote\.all'
remote.all.url=git://original/repo.git            <-- ADDED
remote.all.fetch=+refs/heads/*:refs/remotes/all/* <-- ADDED

然后我们添加一个pushurl to the all远程,指向另一个存储库:

$ git remote set-url --add --push all git://another/repo.git
$ git remote -v
all git://original/repo.git (fetch)
all git://another/repo.git (push)                 <-- CHANGED
origin  git://original/repo.git (fetch)
origin  git://original/repo.git (push)
$ git config -l | grep '^remote\.all'
remote.all.url=git://original/repo.git
remote.all.fetch=+refs/heads/*:refs/remotes/all/*
remote.all.pushurl=git://another/repo.git         <-- ADDED

Here git remote -v显示新的pushurl为了推动,所以如果你这样做git push all master,它将推动master分支到git://another/repo.git仅有的。这显示了如何pushurl覆盖默认 url (remote.all.url)。

现在让我们添加另一个pushurl指向原始存储库:

$ git remote set-url --add --push all git://original/repo.git
$ git remote -v
all git://original/repo.git (fetch)
all git://another/repo.git (push)
all git://original/repo.git (push)                <-- ADDED
origin  git://original/repo.git (fetch)
origin  git://original/repo.git (push)
$ git config -l | grep '^remote\.all'
remote.all.url=git://original/repo.git
remote.all.fetch=+refs/heads/*:refs/remotes/all/*
remote.all.pushurl=git://another/repo.git
remote.all.pushurl=git://original/repo.git        <-- ADDED

你都看到了pushurl我们添加的内容被保留。现在单身git push all master将推动master分支到两者git://another/repo.git and git://original/repo.git.

重要的提示:如果您的遥控器有不同的规则(挂钩)来接受/拒绝推送,则一个遥控器可能会接受它,而另一个则不会。因此,如果您希望它们具有完全相同的历史记录,则需要在本地修复您的提交,以使它们可以被两个遥控器接受并再次推送,否则您可能最终会遇到只能通过重写历史记录来修复它的情况(使用push -f),这可能会给那些已经从存储库中提取了您之前的更改的人带来问题。

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

Git - 将代码推送到两个遥控器 的相关文章

  • Git 合并删除文件

    这是第二次发生这种情况 当我进行合并时 我后来意识到正在合并的分支中的一些文件不再位于正在合并的分支中 最新的例子是我们有一个功能分支 我一直在合并主开发分支中的更改 合并后我们丢失了很多文件 并且它们现在不存在于功能分支中 为什么会出现这
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • 将存储库移至另一台计算机

    我已将存储库从计算机 A 移至计算机 B 我已验证等待推送的提交仍在 B 上 但整个存储库 每个文件 均未暂存 我不想添加它们并将它们作为提交推送 因为从复制存储库到粘贴它 我没有更改每个文件 当我移动存储库时 它只有等待推送的提交 而不是
  • 目标路径已存在且不是空目录

    我克隆了一个 git 存储库 但不小心弄乱了 所以我重新克隆并显示消息 目标路径已存在且不是空目录 我尝试过删除 Mac 中带有目标路径名称的文件夹 但没有成功 我对编码非常陌生 因此我们将不胜感激 对于根文件夹 以及任何其他文件夹 对于那
  • 永久删除 git 提交历史记录

    我需要永久且完全删除 git 存储库的提交历史记录并继续使用文件的当前版本 旧版本 提交不得以任何方式访问 我尝试创建一个新的主分支 删除所有其他分支 但是当我在 git bash 中尝试 git show xxxx 时 旧的提交继续显示
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • Git:如何维护项目的两个分支并仅合并共享数据?

    假设我有一个项目的两个分支 IMClient MacOS 和 IMClient Windows 它们的代码仅 比方说 一个目录 main 有所不同 所有其他目录都包含与系统无关的代码并且可以互换 有些工作人员在 Windows 版本上工作
  • “git merge --squash”的正确用例是什么?

    有些人喜欢git merge squash由于以下原因 压缩到单个提交使您有机会清理混乱的 WIP 提交 并为您要合并的更改提供良好的理由 https coderwall com p qkrmjq git merge squash http
  • 无法从另一台计算机访问 git 分支

    基本上我看不到另一台计算机上的分支 我跑 git branch a 在家用电脑上我得到 C learn ror sample app filling in layout gt git branch a filling in layout m
  • 如何从 github 安装需要构建步骤的 npm 包,例如什么时候分叉一个库?

    假设您使用类似的库vue3 datepicker https www npmjs com package vue3 datepicker 您意识到您需要自定义某些内容 并且作为第一步 您想要使用它的自定义分支 问题是 当包被推送到 npm
  • Windows 上的 git 忽略文件名大小写更改 [重复]

    这个问题在这里已经有答案了 我有一个reactjs应用程序 我正在将所有文件名标准化为小写以符合Nodejs 最佳实践 https devcenter heroku com articles node best practices stic
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • 从 Eclipse 的历史视图中删除 ORIG_HEAD 和 FETCH_HEAD

    我最近开始使用 Eclipse Kepler 和 EGit 插件 这些分支不是我习惯的 有没有办法永久阻止这些分支的创建 我尝试手动删除它们 但它不起作用 并且我不想在下次获取或变基时保留它们 据我从对您问题的评论中了解到 您只希望这些参考
  • 使用 Git 在线使用 TFS 的 Visual Studio 2013:自动保存文件签入

    我目前正在将 Visual Studio Premium 2013 Update 3 与 Team Foundation Server Online 结合使用并使用 Git 存储库 直到最近 我已经成功使用 Git Repo 几个月了 现在
  • 每个分支的 Git 磁盘使用情况

    你知道是否有办法列出每个分支的 git 存储库的空间使用情况 喜欢df or du would 分支的 空间使用情况 是指 尚未在存储库的其他分支之间共享的提交所使用的空间 这没有正确的答案 如果您查看仅包含在特定分支中的提交 您将获得 b
  • GitHub - 指定时间的存储库状态

    我是使用 git 版本控制工具的初学者 我想在指定时间 例如 2013 年 10 月 5 日 下载存储库状态 文件 我怎样才能做到这一点 截至 2019 年 5 月 不确定何时引入 您可以简单地按以下格式添加日期 HEAD 2019 04
  • 警告:引用名称“xxx”不明确

    我想知道为什么我收到 refname is ambigeous 的警告 这是否意味着名称以该字符串开头的分支不超过两个 但这里没有 Thanks git checkout B03799 warning refname B03799 is a
  • 如何将一个文件存储库上传到 Gist,并保留历史记录?

    我的计算机上有一个包含单个文件的 Git 存储库coins py 我如何才能将其作为 Github 上的要点来保存历史 这其实很简单 您可以将现有历史记录移动到 Gist 存储库中 就像将其移动到任何其他存储库中一样 创建要点 只需输入一些
  • 如何使用 git-tfs 清理损坏的历史记录

    我不确定我是如何进入这种状态的 但我的 tfs 默认远程分支中有一些 TFS 中不存在的提交 所以我想摆脱它们 所以我的历史是这样的 A B C D tfs default 但提交 B 和 C 实际上并不是 TFS 中的变更集 因此 当我签
  • git tag --contains 如何工作?

    从几天前开始 我一直在尝试确定在哪个版本 由标签指定 中部署了特定修复 由提交指定 这里的一些帖子发布了这一点git tag contains是收集这些信息的方法 但是选项的文档 https git scm com docs git tag

随机推荐

  • 查明某个类型是否实现了通用接口

    假设我有一个类型 MyType 我想做以下事情 查明对于某些 T MyType 是否实现了 IList 接口 如果 1 的答案是肯定的 请找出 T 是什么 似乎执行此操作的方法是 GetInterface 但它只能让您按特定名称进行搜索 有
  • Realm android 中的更新语句

    我应该如何在android中使用领域数据库更新已经存在的值 我一直在尝试更新它 但它只是作为新值添加而不覆盖它 更新现有对象及其领域数据库中所有字段的另一种方法是使用以下方法realm copyToRealmOrUpdate Object
  • PHP MYSQL 以阿拉伯语插入数据

    我正在尝试使用 PHP 和 HTML 表单将一些阿拉伯语言数据插入到 MySQL 中 当我将数据插入MYSQL表时 表字段将数据表示为 但是当我使用 PHP 访问相同的数据并将其显示在我的网页中时 它显示了正确的数据 我在用 http eq
  • 取消的任务也显示为已完成

    我正在尝试使用异步等待和取消来对此事有更多的了解 为此 我制作了以下控制台应用程序 using System using System Threading using System Threading Tasks namespace Asy
  • JavaScript 中的点运算符

    我认为点运算符只能应用于对象来访问其属性 IE 例如 var o prop property alert o prop property 当JS执行时alert o prop 第一个包含引用的对象o将进一步发现将找到包含引用的属性o pro
  • 按钮突出显示状态的延迟

    我在两种完全不同的情况下遇到了这个问题 这使得它非常奇怪 情况 一个 UIButton 作为另一个 UIView 的子视图 情况 UIBarButtonItem 在 UIToolBar 中 在这两种情况下 按钮仅在稍有延迟 大约 0 5 1
  • 支持多个版本的 Excel 以从 Access 应用程序实现自动化

    我有一个 Access 应用程序 是在多用户环境中的 Access 2013 中开发的 它使用 Excel 自动化来导出和格式化 Excel 文件 正常的 Office Excel 2013 15 0 参考已完成 并且在 Office 20
  • 随机慢速 Rack::MethodOverride#call on Rails app on Heroku

    环境 红宝石 2 1 2 轨道 4 1 4 Heroku 在 Heroku 上托管的 Rails 应用程序中 有时请求需要很长时间才能执行 它只有 1 的次数或更少 但我们无法弄清楚它发生了什么 我们安装了 newrelic 代理 它说它不
  • 如何将 Spring-Boot-Webflux 应用程序部署到 Tomcat 独立服务器?

    一个普通的 spring web 应用程序可以部署到tomcat独立为war文件如下 SpringBootApplication public class MyApplication extends SpringBootServletIni
  • Symfony 渲染控制器异常模板(“”)

    我试图在树枝内渲染一个控制器 我遵循文档 嵌入其他控制器 我经常使用 render controller 方法获得豁免 渲染模板期间抛出异常 在我的 template html twig 中 render controller MyBund
  • 确定元素在文档上的绝对位置

    我需要确定 HTML 元素的确切屏幕坐标 相对于文档 我已经有执行此操作的代码 将每个父对象的 clientWidth 和 clientHeight 相加到根 但当 jQuery 的滚动效果开始工作时似乎无效 事实上 我需要检测位置的元素是
  • 在 mongodb 的一次更新调用中推送到两个单独的数组

    我正在尝试更新以通过一次更新调用来更新文档中的两个单独的数组 有没有办法做到这一点 例如 如果我有一个类似的文档 id 1 array1 1 array2 4 现在我正在这样做 db collection update id 1 push
  • Oracle SQL技术避免填充trans log

    Oracle 编程新手 来自 Sybase 和 MS SQL Server 避免用大量更新填充事务日志的 Oracle 方式 是什么 在我的具体情况下 我正在更新可能非常大量的行 这是我的方法 UPDATE my table SET a c
  • Django 表已经存在

    这是我的 Django 迁移文件 当我跑步时 python manage py makemigrations migrate 我收到这个错误 Error django db utils OperationalError 1050 Table
  • 将非常大的 Gradle 项目与许多子项目分开的指南,以使 Gradle 构建更快,IntelliJ Gradle 刷新更快

    我有一个相当大的 git 项目 我有一个很大的单个 build gradle 定义子项目 在最初几年 没问题 在最初的几年之后 由于子项目的数量 Gradle 命令行配置步骤变得有点慢 例如 当我运行 gradle 命令时 我看到暂停 gt
  • 有没有一种使用正则表达式快速解析大文件的方法?

    问题 非常非常大的文件 我需要逐行解析以从每行获取 3 个值 一切正常 但解析整个文件需要很长时间 可以在几秒钟内完成此操作吗 通常所需时间为 1 分钟到 2 分钟 示例文件大小为 148 208KB 我使用正则表达式来解析每一行 这是我的
  • Rails 协会中未找到名为关联的可能拼写错误的问题

    这是我的控制器 post Post joins customers select customers posts find params id 我的帖子模型 belongs to customer 我的客户模型 has many posts
  • 如何在 AngularJS 单元测试中模拟 Promise 的结果?

    My CompanyService is angular module mean service CompanyService http rootScope q function http rootScope q var company t
  • 从异步 Firestore 查询返回值 swift

    我正在尝试查询我的 Firestore 数据库以查看是否使用了所需的用户名 该查询有效 但是我需要返回一个值 如果该值为空或不存在 以查看用户名是否已存在 我正在尝试使用完成处理程序 但它似乎不起作用 func checkUserTaken
  • Git - 将代码推送到两个遥控器

    I have two远程 git 存储库 origin and github 我推我的分支devel到两个存储库 git push u origin devel git push u github devel 但当我这么做的时候 git p