標籤:

Git 裡面的 origin 到底代表啥意思?

Git 裡面的 origin 到底代表啥意思?


你的代碼庫(repository)可以存放在你的電腦里,同時你也可以把代碼庫託管到Github的伺服器上。

在默認情況下,origin指向的就是你本地的代碼庫託管在Github上的版本。

我們假設你首先在github上創建了一個Repository,叫做repository,假設你的Github ID是user1,這個時候指向你的代碼庫的鏈接是

https://github.com/user1/repository

如果你在terminal里輸入

git clone https://github.com/user1/repository

那麼git就會在本地拷貝一份託管在github上的代碼庫

這個時候你cd到repository

然後輸入

git remote -v

你會看到控制台輸出

origin https://github.com/user1/repository.git (fetch)
origin https://github.com/user1/repository.git (push)

也就是說git為你默認創建了一個指向遠端代碼庫的origin(因為你是從這個地址clone下來的)

再假設現在有一個用戶user2 fork了你個repository,那麼他的代碼庫鏈接就是這個樣子

https://github.com/user2/repository

如果他也照著這個clone一把,然後在他的控制台里輸入

git remote -v

他會看的的就是

origin https://github.com/user2/repository.git (fetch)
origin https://github.com/user2/repository.git (push)

可以看的origin指向的位置是user2的的遠程代碼庫

這個時候,如果user2想加一個遠程指向你的代碼庫,他可以在控制台輸入

git remote add upstream https://github.com/user1/repository.git

然後再輸入一遍 git remote -v

輸出結果就會變為

origin https://github.com/user2/repository.git (fetch)
origin https://github.com/user2/repository.git (push)
upstream https://github.com/user1/repository.git (push)
upstream https://github.com/user1/repository.git (push)

增加了指向user1代碼庫的upstream,也就是之前對指向位置的命名。

總結來講,顧名思義,origin就是一個名字,它是在你clone一個託管在Github上代碼庫時,git為你默認創建的指向這個遠程代碼庫的標籤, @陳肖恩的答案並不準確,origin指向的是repository,master只是這個repository中默認創建的第一個branch。當你git push的時候因為origin和master都是默認創建的,所以可以這樣省略,但是這個是bad practice,因為當你換一個branch再git push的時候,有時候就糾結了


樓上的太啰嗦。

直接把它翻譯成「本體」就好了。

看看origin 本體

git還是一個指令是clone就是克隆。

一個項目的剛開始,在伺服器端,建立一個 origin,就是本體

然後在本體基礎上 clone到本地,就是克隆,也可以分支。

clone在本地的,叫master,有種本地的 本體的味道,因為本地的還可以根據master進行分支,或者被別人再clone


默認情況下的遠端庫的名字。

你可以用 git remote 進行相關操作。

遠端庫也可以用其他名字,用 origin 只是因為他是默認的。


origin表示遠程倉庫,是你在clone的時候git自動設置遠程倉庫的別名,下面這篇博客講得很詳細。

Git 的origin和master分析


感覺origin理解為遠程倉庫在本地的標籤或者別名,便於使用罷了


他只是默認的名字。你可以改成任何你喜歡的。


相當於遠端的本地master,這邊push默認能推送到這個ref上。約定俗成。


推薦閱讀:

如何評價臉書Research Scientist痴迷於.DS_Store這一macOS常見文件?
如何理解 Git 的分散式?
md文件怎麼用?
git能不能做到在代碼庫里添加文件,當你沒有的時候才獲取它,有的時候就忽略它?
git如何push時不輸入密碼?

TAG:Git |