当我跑步时:

git push origin branchname

到底什么是起源,为什么我必须键入它之前的分支名称?


当前回答

最好的答案是:

https://www.git-tower.com/learn/git/glossary/origin

在Git中,“origin”是远程存储库的简写名称 项目最初是从。更准确地说,它被用来代替 原始存储库的URL -从而使引用更多 更容易。

其他回答

简单!“origin”只是你在运行这样的命令时给远程存储库取的昵称:

git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git

从那时起,Git知道“origin”指向特定的存储库(在这种情况下是GitHub存储库)。你可以把它命名为“github”或“repo”或任何你想要的名字。

Origin是系统上某个特定远程存储库的别名。它实际上不是存储库的属性。

通过做

git push origin branchname

你说的是推到原始存储库。不需要命名远程存储库的起源:事实上,同一个存储库对于另一个开发人员可以有不同的别名。

远程只是存储存储库URL的别名。通过使用,可以查看每个远程的URL

git remote -v

在push命令中,您可以使用远程,也可以直接使用URL。一个使用URL的例子:

git push git@github.com:git/git.git master

我想补充一点,如果你把遥控器看作是你想把代码转移到的电脑以外的地方,这就很容易理解了。

一些很好的例子是:

GitHub 托管应用程序的服务器

所以你当然可以有多个遥控器。一种非常常见的模式是使用GitHub存储代码,并使用服务器托管应用程序(如果它是一个web应用程序)。那么您将有2个遥控器(如果您有其他环境,可能更多)。

试着输入git config -e打开你的git配置

注意:按escape,然后:,然后q然后enter退出

例子

下面是如果你有3个遥控器,你在git配置中可能会看到的内容。在本例中,1个远程(称为“origin”)是GitHub,另一个远程(称为“staging”)是登台服务器,第三个远程(称为“heroku”)是生产服务器。

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[remote "origin"]
        url = https://github.com/username/reponame.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[remote "heroku"]
        url = https://git.heroku.com/appname.git
        fetch = +refs/heads/*:refs/remotes/heroku/*
[remote "staging"]
        url = https://git.heroku.com/warm-bedlands-98000.git
        fetch = +refs/heads/*:refs/remotes/staging/*

以[remote…]开头的三行字给我们看看我们能按的遥控器。

运行git push origin将推送到'[remote "origin"]'的url,即GitHub

但类似地,我们可以推到另一个远程,例如,'[remote "staging"]',使用git push staging,那么它将推到https://git.heroku.com/warm-bedlands-98000.git。

在上面的例子中,我们可以看到3个使用git remote的遥控器:

git remote   
heroku
origin
staging

摘要或起源

遥控器只是互联网上的一个地方,你可能有理由把你的代码发送到那里。GitHub是一个很明显的地方,就像托管应用程序的服务器一样,你也可能有其他位置。git push origin仅仅意味着它将推送到“origin”,这是GitHub选择的默认名称。

至于branchname

Branchname就是你要推到遥控器上的东西。根据git推送帮助文档,branchname参数在技术上是一个refspec,在实际应用中,它是你想要推送的分支。

通过运行:git push——help来阅读更多关于git push的文档

其他答案说origin是远程存储库URL的别名,这并不完全准确。应该注意,以http开头的地址是URL,而以git@开头的地址是URI或通用资源标识符。

所有的url都是uri,但并非所有的uri都是url。

简而言之,当你输入git remote add origin <URI>时,你是在告诉你的本地git,无论何时你使用origin这个词,你实际上指的是你指定的URI。把它想象成一个保存值的变量。

就像变量一样,你可以给它起任何你想要的名字(例如。Github, heroku, destination等)。

Git有一个“远程”的概念,它只是指向你存储库其他副本的url。当克隆另一个存储库时,Git会自动创建一个名为“origin”的远程存储库并指向它。

你可以通过输入git remote show origin查看更多关于远程的信息。