"git remote -v" 显示 (fetch) 和 (push) 两次,一次用于 'github',一次用于 'origin' 这是什么意思?
"git remote -v" shows (fetch) and (push) twice, once for 'github' and once for 'origin' what does that mean?
不确定在这个地方问这个问题是否合适,我无法理解某些内容,谷歌搜索也无济于事。
我一直在参考 git
教程,(显然我是新手)。
我学会了检查远程状态的命令git remote -v
。好吧,所有 git 教程都有像 this 这样的快照,显示结果:
origin https://github.com/something/something-else.git (fetch)
origin https://github.com/something/something-else.git (push)
但是当我尝试该命令时,我得到了 origin
和 github
相似的结果。像这样:
github https://github.com/srujan7/something-something-url.git (fetch)
github https://github.com/srujan7/something-something-url.git (push)
origin https://github.com/srujan7/something-something-url.git (fetch)
origin https://github.com/srujan7/something-something-url.git (push)
问题:
我不知道这里的 github
和 origin
是什么意思。为什么我得到了两次? (与教程不同) 我也不确定是否做错了什么,或者完全正确。将我指向其他一些解释这一点的教程也可以。
随时提出修改建议。
在 Git 中,"remote" 基本上只是服务器 URL 的别名,因此您不必一直输入完整的 URL .如果您没有明确指定远程名称,则默认名称为 origin
。在你的例子中,你有两个遥控器,origin
和 github
,指向同一个 URL(无论出于何种原因;你可能按照一些教程步骤创建了 github
遥控器用于演示目的)。所以两者之一是多余的。由于 github
是非标准名称,我只需通过键入
再次远程遥控
git remote rm github
Git支持多个遥控器,所以这是一个足够正常的状态。 编辑:作为,多个遥控器具有相同的URL不是很正常。它无害,但您不妨删除其中一个。
什么是遥控器?
遥控器只是一个名称,例如 origin
或 upstream
或 github
甚至 fred
或 srujan
。
Git 将每个这样的名称存储在配置文件中。在该名称下,Git 可以存储附加信息,例如一个或多个 URL。 (要使遥控器有用,它需要至少有一个 URL,存储为它的 url
设置。)对于抓取,Git 通常需要至少一个 fetch
设置每个遥控器也是如此。
当 git remote -v
列出两个或更多遥控器时
最常见的是,每个 Git 存储库只有一个远程,通常命名为 origin
。这是因为当 git clone
通过复制一些现有的存储库来创建新的存储库时,它会记录(在新存储库中)现有存储库的 URL。为了记录这一点,它创建了一个遥控器,默认情况下,它使用该遥控器的名称 origin
。
git remote add
子命令添加了额外的遥控器。您为遥控器指定一个名称和一个 URL,Git 记录新的遥控器名称并将其主要 URL 设置为您刚刚提供的名称。
在此之后,git remote
或 git remote show
将列出您设置的两个(或更多)遥控器。
如何使用遥控器?
当您 运行 git fetch
或 git push
时,下一个单词通常是要从中获取或推送到的远程名称。例如,git fetch origin
从名为 origin
.
的远程获取
如果您有两个遥控器,一个叫 fred,一个叫 srujan,您可以 git fetch fred
或 git fetch srujan
。同样,您可以 git push fred
或 git push srujan
。这些将使用存储在该遥控器下的 URL 联系指定的遥控器。
当从远程获取时,您的Git将复制他们Git的分支,但重命名 以便它们对于那个特定的遥控器是唯一的。例如,如果我从远程 srujan
获取,并且 srujan 的 Git(在指定的 URL)有分支 master
和 develop
,我将得到 远程跟踪 个名为 srujan/master
和 srujan/develop
的分支。如果我然后从远程 fred
获取,我将得到像 fred/master
和 fred/develop
.
这样的远程跟踪分支
git pull
呢?
git pull
命令是为了方便 shorthand 用于 git fetch
后跟 git merge
。和 git fetch
一样,git pull
接受第三个词,即遥控器的名称。 git pull
做的主要事情是将它交给 git fetch
。
git pull
的奇怪之处在于它还采用分支名称。它以一种奇怪的方式使用它们:git pull srujan master
表示 "run git fetch srujan
first, then run git merge surjan/master
".
您通常最好自己 运行宁 git fetch
,至少在一开始是这样,因为 提取步骤可能会失败(例如,如果您的网络连接中断)或 合并步骤失败(如果无法自动完成合并)。在你非常熟悉 Git 之前,我相信你最好准确地知道 哪一步 出错了,因为你需要采取不同的行动来修复它,这取决于哪一步失败了。
您可能还想变基而不是合并。如果有的话,这比合并更复杂(尽管通常也是更好的方法)。您 可以 获得 git pull
进行变基而不是合并,实际上您可以自动完成此操作,但细节有点复杂,手动 运行宁git fetch
第一,然后git rebase
其次,一点也不复杂。
(简而言之,在您非常熟悉获取、合并和变基并准备好让 Git 尝试一次完成所有操作之前,请不要使用 git pull
。 )
不确定在这个地方问这个问题是否合适,我无法理解某些内容,谷歌搜索也无济于事。
我一直在参考 git
教程,(显然我是新手)。
我学会了检查远程状态的命令git remote -v
。好吧,所有 git 教程都有像 this 这样的快照,显示结果:
origin https://github.com/something/something-else.git (fetch)
origin https://github.com/something/something-else.git (push)
但是当我尝试该命令时,我得到了 origin
和 github
相似的结果。像这样:
github https://github.com/srujan7/something-something-url.git (fetch)
github https://github.com/srujan7/something-something-url.git (push)
origin https://github.com/srujan7/something-something-url.git (fetch)
origin https://github.com/srujan7/something-something-url.git (push)
问题:
我不知道这里的 github
和 origin
是什么意思。为什么我得到了两次? (与教程不同) 我也不确定是否做错了什么,或者完全正确。将我指向其他一些解释这一点的教程也可以。
随时提出修改建议。
在 Git 中,"remote" 基本上只是服务器 URL 的别名,因此您不必一直输入完整的 URL .如果您没有明确指定远程名称,则默认名称为 origin
。在你的例子中,你有两个遥控器,origin
和 github
,指向同一个 URL(无论出于何种原因;你可能按照一些教程步骤创建了 github
遥控器用于演示目的)。所以两者之一是多余的。由于 github
是非标准名称,我只需通过键入
git remote rm github
Git支持多个遥控器,所以这是一个足够正常的状态。 编辑:作为
什么是遥控器?
遥控器只是一个名称,例如 origin
或 upstream
或 github
甚至 fred
或 srujan
。
Git 将每个这样的名称存储在配置文件中。在该名称下,Git 可以存储附加信息,例如一个或多个 URL。 (要使遥控器有用,它需要至少有一个 URL,存储为它的 url
设置。)对于抓取,Git 通常需要至少一个 fetch
设置每个遥控器也是如此。
当 git remote -v
列出两个或更多遥控器时
最常见的是,每个 Git 存储库只有一个远程,通常命名为 origin
。这是因为当 git clone
通过复制一些现有的存储库来创建新的存储库时,它会记录(在新存储库中)现有存储库的 URL。为了记录这一点,它创建了一个遥控器,默认情况下,它使用该遥控器的名称 origin
。
git remote add
子命令添加了额外的遥控器。您为遥控器指定一个名称和一个 URL,Git 记录新的遥控器名称并将其主要 URL 设置为您刚刚提供的名称。
在此之后,git remote
或 git remote show
将列出您设置的两个(或更多)遥控器。
如何使用遥控器?
当您 运行 git fetch
或 git push
时,下一个单词通常是要从中获取或推送到的远程名称。例如,git fetch origin
从名为 origin
.
如果您有两个遥控器,一个叫 fred,一个叫 srujan,您可以 git fetch fred
或 git fetch srujan
。同样,您可以 git push fred
或 git push srujan
。这些将使用存储在该遥控器下的 URL 联系指定的遥控器。
当从远程获取时,您的Git将复制他们Git的分支,但重命名 以便它们对于那个特定的遥控器是唯一的。例如,如果我从远程 srujan
获取,并且 srujan 的 Git(在指定的 URL)有分支 master
和 develop
,我将得到 远程跟踪 个名为 srujan/master
和 srujan/develop
的分支。如果我然后从远程 fred
获取,我将得到像 fred/master
和 fred/develop
.
git pull
呢?
git pull
命令是为了方便 shorthand 用于 git fetch
后跟 git merge
。和 git fetch
一样,git pull
接受第三个词,即遥控器的名称。 git pull
做的主要事情是将它交给 git fetch
。
git pull
的奇怪之处在于它还采用分支名称。它以一种奇怪的方式使用它们:git pull srujan master
表示 "run git fetch srujan
first, then run git merge surjan/master
".
您通常最好自己 运行宁 git fetch
,至少在一开始是这样,因为 提取步骤可能会失败(例如,如果您的网络连接中断)或 合并步骤失败(如果无法自动完成合并)。在你非常熟悉 Git 之前,我相信你最好准确地知道 哪一步 出错了,因为你需要采取不同的行动来修复它,这取决于哪一步失败了。
您可能还想变基而不是合并。如果有的话,这比合并更复杂(尽管通常也是更好的方法)。您 可以 获得 git pull
进行变基而不是合并,实际上您可以自动完成此操作,但细节有点复杂,手动 运行宁git fetch
第一,然后git rebase
其次,一点也不复杂。
(简而言之,在您非常熟悉获取、合并和变基并准备好让 Git 尝试一次完成所有操作之前,请不要使用 git pull
。 )