为什么要在命令行中为“git pull”指定分支?
我不想设置默认的源服务器,也不想为分支设置上游 对于为什么要在命令行中为“git pull”指定分支?,git,git-config,Git,Git Config,我不想设置默认的源服务器,也不想为分支设置上游 对于push命令,我已将push.default=current配置为可以运行: git push origin git pull origin 我还希望能够运行: git push origin git pull origin 但是得到错误: You asked to pull from the remote 'origin', but did not specify a branch. Because this is not the d
push
命令,我已将push.default=current
配置为可以运行:
git push origin
git pull origin
我还希望能够运行:
git push origin
git pull origin
但是得到错误:
You asked to pull from the remote 'origin', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
如何绕过此错误消息?您关闭了一个选项(即拒绝设置上游),因此您没有选择:必须指定分支。请注意,您可以编写自己的工具来实现这一点 为什么会出现这种情况,答案是复杂的、哲学的,取决于维护Git的人。但从根本上说,我们可以看到这些事实:
- 在Git中,
动词不是push
动词的对立面。就对立而言,它们是pull
和push
。(动词fetch
或多或少的意思是“获取、合并或重定基”。)pull
- 尽可能靠近,
和push
是不对称的。当您使用fetch
时,您会将来自另一个存储库的提交带到您的存储库中,然后设置远程跟踪名称以指向此类提交的提示。另一个存储库有一些分支B1…Bn,对于每个这样的名称,您的存储库现在都有一个最新的git fetch remote
另一方面,由于您将remote/Bi
设置为push.default
,因此当您使用current
时,您的git会为当前分支C发送任何所需的提交,然后要求remotegit push remote
将其分支C设置为指向该提交。C前面没有插入限定符,例如,没有remote
使它对您来说是唯一的;您要求他们的Git直接设置他们的名字C 即使使用了其他推送设置,通常也会要求远程设备设置自己的分支。eugen/
命令将整个名称空间专用于每个遥控器:您可以设置您的fetch
,而不是您自己的refs/remotes/remote/rename
。push命令让他们设置自己的refs/heads/name
refs/heads/name
源
)。Git甚至可以假设默认情况下,fetch-from和push-to上的分支名称始终相同,并且使fetch和push工作而不需要任何上游设置。当然,这会限制你从一次推到一次
若Git假设从多个系统获取数据,推送到多个系统,那个么它可能有一种方法来完成您想要的任务。但是它没有(假设是这样),所以它没有(有一种方法来做你想做的事情)。你关闭了你的一个选项(即,你拒绝设置上游),所以你没有选择:你必须指定分支。请注意,您可以编写自己的工具来实现这一点 为什么会出现这种情况,答案是复杂的、哲学的,取决于维护Git的人。但从根本上说,我们可以看到这些事实:
- 在Git中,
动词不是push
动词的对立面。就对立而言,它们是pull
和push
。(动词fetch
或多或少的意思是“获取、合并或重定基”。)pull
- 尽可能靠近,
和push
是不对称的。当您使用fetch
时,您会将来自另一个存储库的提交带到您的存储库中,然后设置远程跟踪名称以指向此类提交的提示。另一个存储库有一些分支B1…Bn,对于每个这样的名称,您的存储库现在都有一个最新的git fetch remote
另一方面,由于您将remote/Bi
设置为push.default
,因此当您使用current
时,您的git会为当前分支C发送任何所需的提交,然后要求remotegit push remote
将其分支C设置为指向该提交。C前面没有插入限定符,例如,没有remote
使它对您来说是唯一的;您要求他们的Git直接设置他们的名字C 即使使用了其他推送设置,通常也会要求远程设备设置自己的分支。eugen/
命令将整个名称空间专用于每个遥控器:您可以设置您的fetch
,而不是您自己的refs/remotes/remote/rename
。push命令让他们设置自己的refs/heads/name
refs/heads/name
源
)。Git甚至可以假设默认情况下,fetch-from和push-to上的分支名称始终相同,并且使fetch和push工作而不需要任何上游设置。当然,这会限制你从一次推到一次
若Git假设从多个系统获取数据,推送到多个系统,那个么它可能有一种方法来完成您想要的任务。但是它没有(假设这个),所以它没有