首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"git remote -v“显示(获取)和(推送)两次,一次是”github“,一次是”原产地“,这意味着什么?

"git remote -v“显示(获取)和(推送)两次,一次是”github“,一次是”原产地“,这意味着什么?
EN

Stack Overflow用户
提问于 2016-06-10 07:03:57
回答 2查看 9.2K关注 0票数 5

不知道这是不是问这个问题的地方,我无法理解一些东西,谷歌也没有帮助。

我一直在引用git教程(显然意味着我是新手)。

我学习了命令git remote -v来检查远程状态。好吧,所有的git教程都有类似于的快照,显示了结果:

代码语言:javascript
复制
origin  https://github.com/something/something-else.git (fetch)
origin  https://github.com/something/something-else.git (push)

但是,当我尝试命令时,对于origingithub,我得到了类似的结果。就像这样:

代码语言:javascript
复制
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)

问题:

我不知道这里的githuborigin是什么意思。为什么我得到了两次呢?(不像教程),我也不确定是否做错了什么,或者它完全正确。向我指点其他一些教程,解释这一点也可以。

请随意建议编辑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-10 07:24:58

Git支持多个远程设备,因此这是一个足够正常的状态。编辑:作为舒伯思回答,为多个远程用户设置相同的URL并不是很正常。这是无害的,但你也可以删除其中之一。

什么是遥控器?

远程只是一个名称,比如originupstreamgithub,甚至是fredsrujan

Git将每个这样的名称存储在一个配置文件中。在这个名称下,Git可以存储其他信息,例如一个或多个URL。(要使远程很有用,它需要至少有一个URL,作为其url设置存储。)对于抓取,Git通常也需要每个遥控器至少需要一个fetch设置。

git remote -v列出两个或多个遥控器时

最常见的情况是,每个Git存储库都只有一个远程存储库,通常命名为origin。这是因为当git clone通过复制一些现有的存储库创建一个新的存储库时,它会记录(在新的存储库中)现有存储库的URL。为了记录这一点,它创建了一个远程,默认情况下,它使用该遥控器的名称origin

git remote add子命令添加额外的远程处理程序。为远程和URL指定一个名称,Git记录新的远程名称,并将其主URL设置为您刚才提供的URL。

在此之后,git remotegit remote show将列出您设置的两个(或更多)遥控器。

我怎么用遥控器?

当您运行git fetchgit push时,下一个单词通常是要从或推送到的遥控器的名称。例如,git fetch origin从名为origin的远程设备中获取。

如果您有两个遥控器,一个名为fred,另一个名为srujan,则可以使用git fetch fredgit fetch srujan。类似地,您可以使用git push fredgit push srujan。它们将使用存储在该遥控器下的URL与指定的遥控器联系。

当从远程获取时,您的Git将复制它们的Git分支,但是将它们重命名,使它们对于特定的遥控器是独一无二的。例如,如果我从远程srujan获取,而srujan的Git (在指定的URL处)有分支masterdevelop,我将得到名为srujan/mastersrujan/develop的远程跟踪分支。如果然后从远程fred中获取信息,我将得到远程跟踪分支,如fred/masterfred/develop

git pull

git pull命令是git fetch的方便缩写,其次是git merge。与git fetch一样,git pull使用第三个单词,即远程的名称。git pull对此所做的主要事情就是把它交给git fetch

git pull的奇怪之处在于它也采用了分支名称。它以一种奇怪的方式使用这些:git pull srujan master的意思是“先运行git fetch srujan,然后运行git merge surjan/master”。

通常最好自己运行git fetch,至少在一开始是这样,因为获取步骤可能失败(例如,如果网络连接中断)或合并步骤失败(如果合并不能自动完成)。在您非常熟悉Git之前,我相信您最好准确地知道哪一步出错了,因为您需要采取不同的操作来修复它,这取决于哪一步失败了。

您还可能希望重基而不是合并。这比合并要复杂得多(尽管通常也是一种更好的方法)。您可以让git pull进行重基而不是合并,实际上您可以自动实现这一点,但是细节有点复杂,首先手动运行git fetch,然后再手动运行git rebase,这一点都不复杂。

(简而言之,在您非常熟悉抓取、合并和重基之前,不要使用git pull,并且已经准备好允许Git一次完成所有这些操作。)

票数 5
EN

Stack Overflow用户

发布于 2016-06-10 07:16:40

在Git中,"remote“基本上只是服务器URL的别名,所以您不必一直键入完整的URL。如果没有显式指定远程名称,默认名称是origin。在您的示例中,您有两个遥控器,origingithub,它们指向同一个URL (无论出于什么原因;您可能遵循一些教程步骤来创建github远程演示)。所以两个中有一个是多余的。由于github是非标准名称,我只需键入

代码语言:javascript
复制
git remote rm github
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37741924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档