当我运行:
git push origin branchname
origin
究竟是什么,为什么我在分支名称前面要输入它?
当我运行:
git push origin branchname
origin
究竟是什么,为什么我在分支名称前面要输入它?
origin
是你系统中特定远程仓库的别名。它实际上不是该仓库的属性。
通过执行
git push origin branchname
你的意思是将代码推送到名为origin
的远程仓库。实际上,没有必要给远程仓库命名为origin
,同一个仓库也可以为其他开发者使用不同的别名。
远程仓库只是存储仓库URL的别名。您可以使用以下命令查看每个远程仓库对应的URL:
git remote -v
在push
命令中,您可以使用远程,也可以直接使用URL。以下是一个使用URL的示例:
git push git@github.com:git/git.git master
git push
的文档中,您可以看到它首先检查该存储库的配置(您可以使用git config --list
检查)是否存在一个名为branch.<branchname>.remote
的键。如果未设置,则“默认为origin”-https://git-scm.com/docs/git-push - Kenmoreorigin
并不是远程仓库的名称,而是在远程仓库URL的位置上设置为键的本地别名。
这样可以避免用户在提示推送时输入整个远程URL。
Git在首次从远程克隆时默认设置此名称以供约定使用。
该别名不是硬编码的,并且可以使用以下命令提示更改:
git remote rename origin mynewalias
请查看http://git-scm.com/docs/git-remote以获取更多澄清信息。
Git有“远程仓库”的概念,它们只是指向其他副本的URL。当你克隆另一个仓库时,Git会自动创建一个名为“origin”的远程,并将其指向该仓库。
您可以通过输入git remote show origin
来查看有关远程的更多信息。
git show origin
而是要用git remote show origin
?肯定有原因,是什么呢?谢谢。 - Stack0verfloworigin
是您远程仓库URL的默认别名。
Origin
是一个类似于远程仓库url的简称,可以作为其别名。
我们来看一个例子。
假设你有一个名为amazing-project
的远程仓库
,然后你将该远程仓库克隆到本地机器上,以便拥有一个本地仓库
。那么你会得到下面图示中所示的内容:
git remote -v
,它将列出所有与你的本地代码仓库相连的远程代码仓库。在那里,你会看到为了从远程代码仓库推送或拉取代码,你需要使用“origin”这个简称。friend
来引用我的朋友的远程存储库。 您还可以看到两个远程存储库都具有相同的项目名称amazing-project
,这就是为什么远程服务器中的远程存储库名称和本地存储库中的短名称不应该相同的原因之一!简单!"origin"只是你在类似这样的命令中给你的远程仓库起的昵称:
git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git
从那时起,Git 知道 "origin" 指向特定的存储库(在这种情况下是 GitHub 存储库)。你可以将其命名为 "github"、"repo" 或其他任何你想要的名称。
我之前也对此感到困惑,以下是我学到的内容。
当你克隆一个仓库(比如从GitHub):
origin
是从中克隆仓库的URL的别名。请注意,你可以更改这个别名。
远程仓库中有一个名为 master
的分支(由 origin
别名引用)。本地也会创建另一个名为 master
的分支。
更多信息可以在这个SO问题中找到:Git branching: master vs. origin/master vs. remotes/origin/master
[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。
类似地,我们也可以通过执行 git push staging
将代码推送到另一个名为 '[remote "staging"]' 的远程仓库,这个例子中会将代码推送至 https://git.heroku.com/warm-bedlands-98000.git
。
在上面的例子中,我们可以使用 git remote
命令查看当前存在的三个远程仓库。
git remote
heroku
origin
staging
起源
远程存储库(Remotes)是您可以将代码发送到的互联网位置。GitHub是一个显而易见的地方,托管应用程序的服务器也是如此,您可能还有其他位置。git push origin
表示它将推送到“origin”,这是GitHub选择默认使用的名称。
分支名称
分支名称
就是您要将其push
到远程的内容。根据git push文档,branchname
参数在技术上是一个refspec
,但实际上是您想要推送的分支。
git push --help
可在git push
文档中了解更多内容。这里最好的答案:
在Git中,“origin”是一个简写的名称,表示一个项目最初从哪个远程仓库克隆而来。更准确地说,它代替了原始仓库的URL,因此使得引用变得更加容易。