Git 如何手动推送到另一个回购协议一次?

Git 如何手动推送到另一个回购协议一次?,git,github,Git,Github,有些人谈论“URL”,有些人谈论“remotes”,对此我找不到一个简单明了的解释 我的想法是: 我的客户有自己的git回购协议 我有自己的回购协议,我所有的工作都在上面 当我得到报酬(或其他)时,我想手动推送另一个回购协议一次,我希望客户“清楚地”看到我为他所做的推送(就像没有其他推送/分支) 以下是我的配置: $ git remote -v show origin git@github.com:olivierpons/my_repo.git (fetch) origin git@gi

有些人谈论“URL”,有些人谈论“remotes”,对此我找不到一个简单明了的解释

我的想法是:

  • 我的客户有自己的git回购协议
  • 我有自己的回购协议,我所有的工作都在上面
当我得到报酬(或其他)时,我想手动推送另一个回购协议一次,我希望客户“清楚地”看到我为他所做的推送(就像没有其他推送/分支)

以下是我的配置:

$ git remote -v show
origin  git@github.com:olivierpons/my_repo.git (fetch)
origin  git@github.com:olivierpons/my_repo.git (push)

如何做到这一点?

您需要通过网络访问客户端的存储库。然后,只需将您的更改(更准确地说,是您的分支)推送到客户的存储库:

git push user@client_host:path/to/repository.git local_branch:remote_branch_name
如果您无权访问客户的存储库,也可以通过集成存储库进行访问。您和您的客户都可以访问的远程存储库。然后,您只将已完成或付费的工作推送到该存储库,而您的客户将从该存储库中提取。完成工作的命令与上面相同,只是url不同

每次都要输入完整的url会让人厌烦,这就是“远程”的作用所在。Git中的remote是远程存储库url的别名。您可以轻松添加一个URL,然后使用它来代替完整URL:

git remote add client user@client_host:path/to/repository.git
git push client your_branch:remote_branch_name
请注意,推送分支将推送此分支的完整历史记录(包括所有提交)。在您的案例中,这可能是一个问题,也可能不是问题

我希望客户“清楚地”看到我为他所做的推送(就像没有其他推送/分支)

那么最好有:

  • 一个单独的本地存储库,您只在其中为客户机进行开发
  • 一个独立的GitHub存储库,您的客户端可以随意克隆和检查
如果您只想将“部分”共享给外部协作者,那么尝试将多个作品保存在同一存储库中并不合适

如果您真的想推动一个分支,如在的中,您需要确保:

  • 它是一个(没有公共历史记录,否则您将推送创建它的上一个分支的历史记录)
  • 未对其进行合并(或者,除了您自己的分支之外,您还将推送合并分支的历史记录)

如果我不精确
您的分支:远程分支\u名称
git是否尝试“默认”分支=我当前正在处理的分支?尝试您的第一个解决方案时出现小问题。。。。。“![rejected]主控->主控(先取)错误:无法将某些引用推送到”git@github.com:path/repo.git'提示:更新被拒绝,因为远程包含您在本地没有的工作。这通常是由另一个存储库推送到同一个引用引起的。您可能希望首先集成远程更改(例如,'git pull…')再次按下。有关详细信息,请参阅'git push--help'中的'Note about fast forwards'如果分支的本地和远程名称相同,则只需执行
git push remotename branchname
。如果根本不指定它,则行为取决于
push的配置值。默认值
simple
(=将当前分支推送到具有相同名称的分支)成为Git 2.0中的默认模式。我更喜欢总是显式地给出我想要推送的分支…明确意图并避免意外情况。
push
只允许您向远程添加历史记录,而不是丢弃或更改现有历史记录。看起来您的远程存储库在分支主机上包含的提交与您的不同本地存储库。错误消息非常清楚,并指向了正确的文档,解释了什么是快速转发以及在当前情况下不可能实现快速转发的原因。当然,您可以将本地主服务器推送到远程服务器上另一个名称不同的分支:
git push remotename master:newname
a remote是一个短名称用于另一个Git存储库。它主要用于存储URL。a(或)是一个Internet样式的“电话号码”,您可以通过它让Git拨号到另一个Git。在上面的输出中,
origin
是远程的,它存储的URL是
git@github.com:olivierpons/my_repo.git
(这是一种缩短的、特定于Git的
ssh://git@github.com/olivierpons/my_repo.git
)。