如何在 git 中设置默认遥控器?

How to set default remote in git?

我的 git 存储库中有多个遥控器。如果我执行 git pull,它会询问我一位同事的密码。

如何将遥控器更改为 black

要自动化此分支的流程:

git config branch.<your-branch>.remote black

没有默认远程,每个分支都可以从远程仓库跟踪特定分支。

如果您使用 git checkout -b <branch-name> 创建了分支,其中 <branch-name> 是远程分支的名称,那么新分支会跟踪该分支(来自任何远程主机)。

如果您在本地创建分支然后使用 git push --set-upstream <remote-name> <branch-name>,则本地分支 <branch-name> 会跟踪远程分支 <remote-name>/<branch-name>

您始终可以使用 git branch --set-upstream-to to change the remote branch that is tracked by the current branch or git branch --unset-upstream 告诉它不要跟踪任何远程分支。

除了上面描述如何为本地副本中的现有分支设置远程存储库的响应之外,我觉得有必要对此进行扩展,注意到 虽然默认无法为 git pull 设置远程 ,可以使用 [=] 在您的存储库中为 git checkout 设置默认远程 21=] 设置。 这样,git checkout some-branchgit pushgit pull 都将 Just Work™ 按照您的预期进行,根本不指定或考虑远程名称。继续阅读以获得完整的解释。

OP 注意事项:在下面的示例中,我将使用远程名称 origin 而不是您的特定远程名称 black 因为对于大多数人来说,默认值 origin remote 是你想要设置的那个。不过,出于您的目的,只需将 origin 的任何实例替换为 black.

简化您的分行结账流程:

首先,您需要在控制台中输入以下内容:

git config checkout.defaultRemote origin

此命令将以下部分添加到您存储库的 .git/config 文件中:

[checkout]
     defaultRemote = origin

现在,在配置了默认分支后,每次您想要设置存在于“origin”远程存储库中的远程分支的新本地副本时,您只需键入:

git checkout some-branch

并且 git 会假定您的实际意思是:

git checkout --track origin/some-branch

也可以缩写为:

git checkout -u origin/some-branch

这是一个了不起的生活妙招。这是一种比上面提到的 git checkout -b some-branch 解决方案更聪明的设置本地副本的替代方法,当您 实际上知道分支已经存在 时非常有用或更多遥控器。特别是,如果您使用多个遥控器而不使用 defaultRemote,则每次签出分支时都需要输入长格式 git checkout --track origin/branch-name,因为 git 不知道来自它应该跟踪哪个遥控器。避免让自己头疼,并始终进行设置。 (有关建议的方法,请参阅下面的最终想法)。

简化您的 git 推送和 git 拉取过程:

正如上面所暗示的,将您的本地分支自动配置为从 defaultRemote 进行跟踪意味着当您需要在某个分支上签出时执行 git pull,git 已经知道确切地从哪个遥控器中拉出。这非常非常有帮助。

注意:如果本地分支跟踪一个远程并且你想从另一个远程提取代码,或者如果本地分支根本没有设置为跟踪远程,那么你可以:

  • 手动指定要从中提取的正确遥控器:

      git pull <remote-name>
    

    每次要从远程拉取时都必须这样做。

  • 使用以下方法在逐个分支的基础上永久修复远程跟踪分支:

      git branch --set-upstream-to <remote-name/branch-name>
    

      git config branch.<branch-name>.remote <remote-name>
      git config branch.<branch-name>.merge refs/heads/<branch-name>
    

    这是一次性更改;所有后续 git pull 命令现在应该从您指定的 remote/branch 中提取。

注意事项和影响:

要使 git config checkout.defaultRemote origingit pull 命令场景有任何真正的好处,需要在您首次开始处理具有多个遥控器的项目时设置此 command/configuration,或者一旦您开始添加额外的遥控器。原因是因为这个配置只会对你要检查的分支有影响 after 设置了这个配置;它对现有分支没有任何影响。在这种情况下,所有尚未从特定远程跟踪的现有本地分支都需要单独修改以添加预期的远程,然后才能使用简单的 git pull

最后的想法

如果您发现自己经常在各种项目中遇到此问题,则更全面的设置是按照约定工作,即默认遥控器应始终添加为所有项目中的“原始”遥控器。然后,您可以使用以下命令全局设置此配置:

git config --global checkout.defaultRemote origin