拥有一致的命名标准是保持本地和上游Git存储库一致的关键。当本地Git存储库的命名与远程存储库的命名不一致时,与远程存储库的协作可能会变得混乱。解决这个问题的一种方法是标准化两个词的使用和含义:origin指的是你个人的example.com//*仓库,upstream指的是你从origin仓库fork出来的example。com仓库。换句话说,upstream是指公开提交工作的上游存储库,origin是指上游存储库的本地分支,例如,您从中生成拉取请求(PR)。下面以pbench仓库为例,逐步新建本地克隆的方法,其中origin和upstream的定义保持一致。1.在大多数Git托管服务上,当你想在上面工作时,你必须fork它。当您运行自己的Git服务器时,这并不是真正必要的,但对于公共代码库,这是一种在贡献者之间转移差异的简单方法。创建Git存储库的分支。对于此示例,假设您的分叉位于example.com//pbench。2.接下来,您必须通过SSH获取用于克隆的统一资源标识符(URI)。在大多数Git托管服务(如GitLab或GitHub)上,它位于标记为“克隆”或“通过SSH克隆”的按钮或面板上,用于将克隆URI复制到剪贴板。3.在您的开发系统上,使用您复制的URI克隆存储库:$gitclonegit@example.com:/pbench.git这将使用默认名称origin克隆Git存储库作为您的pbench存储库clone的复制副本.4.切换到您刚刚克隆的目录:$cd~/pbench5.接下来,获取源存储库(您最初创建的那个)的SSHURI。这大概和上面的方法是一样的。找到“克隆”按钮或面板,复制克隆地址。在软件开发中,这通常被称为“上游”,因为(理论上)这是大多数提交发生的地方,并且您希望这些提交流向下游存储库。6.将URI添加到您的本地存储库。是的,将有两个不同的遥控器分配给您的本地存储库副本:$gitremoteaddupstreamgit@example.com:bigproject/pbench.git7现在您有两个命名的遥控器:origin和upstream。您可以使用remote子命令查看您的远程存储库:$gitremote-v现在,您本地的master分支正在跟踪origin的master,这不一定是您想要的。您可能希望跟踪此分支的上游版本,因为大多数开发都发生在上游。这个想法是您根据从上游获得的内容添加更改。8.改变你本地的master分支来跟踪upstream/master:$gitfetchupstream$gitbranch--set-upstream-to=upstream/mastermaster你可以对任何你想要的分支做这个,而不仅仅是master。例如,一些项目对所有不稳定的更改使用dev分支,而为已批准发布的代码保留master。9.一旦你设置了你的跟踪分支,一定要重新设置你的master分支的基线以使其与上游存储库的任何新更改保持同步:$gitremoteupdate$gitcheckoutmaster$gitrebase这是一个keepA在不同分支之间同步Git存储库的好方法。如果您想自动执行此操作,请阅读SethKenlon关于使用Ansible托管Git存储库的文章。