"git fetch <url>" 和 "git add remote upstream <url>" 后跟 "git fetch upstream" 有什么区别?
What's the difference between "git fetch <url>" and "git add remote upstream <url>" followed by "git fetch upstream"?
我试图将更改从上游拉到我的分支中。我试过git fetch https://github.com/someuser/someproject
,但它固执地拒绝做任何事情。它只是说了一些完全神秘的话,什么也没做,即:
From https://github.com/someuser/someproject
* branch HEAD -> FETCH_HEAD
但是当我将 URL 添加为命名遥控器时,情况发生了变化:
> git remote add upstream https://github.com/someuser/someproject.git
> git fetch upstream
remote: Counting objects: 340, done.
remote: Compressing objects: 100% (268/268), done.
remote: Total 340 (delta 145), reused 18 (delta 16), pack-reused 44
... etc ...
那有什么区别呢?为什么当我指定一个遥控器而不先添加它时它什么都不做?当我试图从 URL?
中获取时,它究竟告诉我什么
我不是这方面的专家,所以我使用 Google 和 the man pages 来帮助拼凑出正在发生的事情。
This question 应该揭开事物的 FETCH_HEAD
方面的神秘面纱。我真的不可能通过阅读你的问题来判断你的回购协议的状态,但大概你的 FETCH_HEAD
指向远程回购协议中 HEAD
中的最新提交,无论发生什么是。您可能已经在您的系统上进行了这些提交,因此 git 所做的只是更新 FETCH_HEAD
。您可能想提供一个分支。
添加远程分支后,您将获得额外的功能,例如默认分支和远程跟踪分支。我相信您的第二个命令的行为有所不同,因为 git
正在采用一些隐式逻辑来执行通常需要的操作。直接从 URL 中获取更像是一种高级操作,因此您得到的假设更少。
这个故事的寓意是,如果您想让事情顺利进行,请添加一个遥控器。否则,请准备好应对更多底层细节。
当您使用 URL 获取时,您还必须指定要获取的 <refspec>
,即分支或标签,否则它只会获取默认的 HEAD
将远程 URL 设置为 FETCH_HEAD
,这可能不是您想要的。
语法是可选的 +
后跟 <src>:<dst>
。如果省略 <dst>
,将使用 FETCH_HEAD
。
例如:
git fetch https://github.com/someuser/someproject refs/heads/master:upstream/master
这将在本地创建 upstream/master
远程分支。
我试图将更改从上游拉到我的分支中。我试过git fetch https://github.com/someuser/someproject
,但它固执地拒绝做任何事情。它只是说了一些完全神秘的话,什么也没做,即:
From https://github.com/someuser/someproject
* branch HEAD -> FETCH_HEAD
但是当我将 URL 添加为命名遥控器时,情况发生了变化:
> git remote add upstream https://github.com/someuser/someproject.git
> git fetch upstream
remote: Counting objects: 340, done.
remote: Compressing objects: 100% (268/268), done.
remote: Total 340 (delta 145), reused 18 (delta 16), pack-reused 44
... etc ...
那有什么区别呢?为什么当我指定一个遥控器而不先添加它时它什么都不做?当我试图从 URL?
中获取时,它究竟告诉我什么我不是这方面的专家,所以我使用 Google 和 the man pages 来帮助拼凑出正在发生的事情。
This question 应该揭开事物的 FETCH_HEAD
方面的神秘面纱。我真的不可能通过阅读你的问题来判断你的回购协议的状态,但大概你的 FETCH_HEAD
指向远程回购协议中 HEAD
中的最新提交,无论发生什么是。您可能已经在您的系统上进行了这些提交,因此 git 所做的只是更新 FETCH_HEAD
。您可能想提供一个分支。
添加远程分支后,您将获得额外的功能,例如默认分支和远程跟踪分支。我相信您的第二个命令的行为有所不同,因为 git
正在采用一些隐式逻辑来执行通常需要的操作。直接从 URL 中获取更像是一种高级操作,因此您得到的假设更少。
这个故事的寓意是,如果您想让事情顺利进行,请添加一个遥控器。否则,请准备好应对更多底层细节。
当您使用 URL 获取时,您还必须指定要获取的 <refspec>
,即分支或标签,否则它只会获取默认的 HEAD
将远程 URL 设置为 FETCH_HEAD
,这可能不是您想要的。
语法是可选的 +
后跟 <src>:<dst>
。如果省略 <dst>
,将使用 FETCH_HEAD
。
例如:
git fetch https://github.com/someuser/someproject refs/heads/master:upstream/master
这将在本地创建 upstream/master
远程分支。