我的git存储库中有多个遥控器。如果我执行git pull
,则要求我的一个同事的密码。
如何将遥控器更改为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
更改由当前分支或git branch --unset-upstream
跟踪的远程分支,以告诉它不跟踪任何远程分支。
除了上面描述了如何为本地副本中现有分支设置远程存储库的响应外,我觉得值得扩展这一点,并指出虽然无法为git pull
设置默认远程,但使用checkout.defaultRemote
设置为您的存储库中的git checkout
设置默认远程 can 。git push
和git pull
将全部仅适用于您的预期方式™,而无需指定或思考远程名称。继续阅读以进行完整的解释。
注意:在下面的示例中,我将使用远程名称 origin
而不是您的特定遥控器命名为 black
,因为对于大多数人来说,默认 onem 远程是您的一个想要这样的设置。不过,出于您的目的,只需用 Origin black 。。
简化您的分支结帐过程:
首先,您要在控制台中输入以下内容:
git config checkout.defaultRemote origin
此命令将以下部分添加到您的存储库的.git/config File:
[checkout]
defaultRemote = 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拉动过程:
正如上面暗示的那样,让您的本地分支自动配置以从defauletremote跟踪,这意味着当您需要在某些分支上进行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
命令现在都应从您指定的远程/分支中提取。
警告和含义:
对于git config checkout.defaultRemote origin
,对于git pull
命令方案,CC_23具有任何真正的好处,当您首次开始使用多个遥控器的项目工作时,或者一旦您开始添加其他远程远程远程,就需要设置此命令/配置。原因是因为此配置只会对您要在设置此配置后要检查的分支有影响。它对现有分支没有任何影响。在这种情况下,所有尚未从特定遥控器进行跟踪的现有本地分支都需要单独修改以在简单的git pull
起作用之前添加预期的遥控器。
最终想法
如果您发现自己经常在各种项目上遇到此问题,则更全面的环境是根据一定的惯例工作,即应始终将默认遥控器添加为"来源"。在您的所有项目中遥遥无期。然后,您可以在全球设置此配置:
git config --global checkout.defaultRemote origin
自动化此分支的过程:
git config branch.<your-branch>.remote black