欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:使用 GitHub 遠(yuǎn)程倉(cāng)庫(kù)

柚子快報(bào)激活碼778899分享:使用 GitHub 遠(yuǎn)程倉(cāng)庫(kù)

http://yzkb.51969.com/

使用 GitHub 遠(yuǎn)程倉(cāng)庫(kù)

GitHub 是最大的 Git 版本庫(kù)托管商,是成千上萬的開發(fā)者和項(xiàng)目能夠合作進(jìn)行的中心。 大部分 Git 版本庫(kù)都托管在 GitHub,很多開源項(xiàng)目使用 GitHub 實(shí)現(xiàn) Git 托管、問題追蹤、代碼審查以及其它事情。本篇文章主要帶大家上手 GitHub 最基本的使用方式。

創(chuàng)建 Git 倉(cāng)庫(kù)

先登入 GitHub,再進(jìn)入 GitHub 首頁: https://github.com

點(diǎn)選右上角的使用者名稱進(jìn)入個(gè)人首頁:

切換到 Repositories 后點(diǎn)擊 New 按鈕填寫倉(cāng)庫(kù)名即可創(chuàng)建一個(gè)倉(cāng)庫(kù):

在創(chuàng)建好后,我們就可以復(fù)制這個(gè)遠(yuǎn)程倉(cāng)庫(kù)地址,使用 git clone 命令把遠(yuǎn)程倉(cāng)庫(kù)下載到本地。

git clone 命令 將遠(yuǎn)程倉(cāng)庫(kù)復(fù)制到本地,并建立工作目錄與本地倉(cāng)庫(kù) (就是 .git 文件夾)

如果我們?cè)趧?chuàng)建的時(shí)候沒有勾選 Initialize this repository with a README,那么創(chuàng)建出來是一個(gè)空倉(cāng)庫(kù)。

Github 中也有相關(guān)的提示:

遠(yuǎn)程倉(cāng)庫(kù)的添加

前面 創(chuàng)建 Git 倉(cāng)庫(kù) 部分我們只提到通過 clone 命令把遠(yuǎn)程空倉(cāng)庫(kù)下載到本地。那如果我們想要把本地的倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)建立關(guān)聯(lián)呢?

比如說我們有個(gè) localDemo 這個(gè)本地倉(cāng)庫(kù),想要與遠(yuǎn)程的 https://github.com/dralexsander/remoteDemo.git 倉(cāng)庫(kù)建立關(guān)聯(lián),可以直接使用下面的命令:

git remote add origin https://github.com/dralexsander/remoteDemo.git

從上圖可以看到執(zhí)行完命令后沒有任何輸出,但其實(shí)它修改了 .git/config 這個(gè)文件。

多了一個(gè) [remote “origin”] 的配置,這個(gè) origin 的意思就是遠(yuǎn)程倉(cāng)庫(kù)的名字(就是我們通過 git remote add origin xxx 給 remoteDemo 這個(gè)遠(yuǎn)程倉(cāng)庫(kù)定義的名字,當(dāng)然也可以改成 git remote add remoteDemo xxx)。url 就是這個(gè)遠(yuǎn)程倉(cāng)庫(kù)的地址,fetch 就是本地分支與本地追蹤分支的對(duì)應(yīng)關(guān)系,refs/heads 里存儲(chǔ)本地分支,refs/remotes/origin 存儲(chǔ)本地追蹤分支。

事實(shí)上在我們的本地倉(cāng)庫(kù)中,可以建立多個(gè)遠(yuǎn)程倉(cāng)庫(kù)的關(guān)聯(lián)。

比如說在我們當(dāng)前本地倉(cāng)庫(kù) remoteDemo 中,關(guān)聯(lián)多一個(gè) axios 的遠(yuǎn)程倉(cāng)庫(kù),通過 git remote -v 命令可以查看目前在「工作目錄」里的遠(yuǎn)程倉(cāng)庫(kù)信息

git remote add axios https://github.com/axios/axios.git

在 .git/config 文件中也多了 axios 遠(yuǎn)程倉(cāng)庫(kù)的配置:

不過,通常我們關(guān)聯(lián)多個(gè)遠(yuǎn)程倉(cāng)庫(kù)的機(jī)會(huì)并不多,因此稍加了解順便理解一下 origin 只是一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的參照名稱即可。

遠(yuǎn)程分支

我們先創(chuàng)建一個(gè)非空倉(cāng)庫(kù),然后使用 git clone 命令將遠(yuǎn)程倉(cāng)庫(kù)復(fù)制到本地,深入看一下發(fā)生了什么。

Git 會(huì)自動(dòng)幫我們配置好.git/config 文件里的遠(yuǎn)程倉(cāng)庫(kù)信息:

而且最明顯的是我們的本地倉(cāng)庫(kù)上多了一個(gè) remotes/origin/main 分支( remotes/origin/HEAD 是遠(yuǎn)程 main 分支的指針),通過 git branch -a 命令(不帶 -a 參數(shù)展示的是本地的分支, -a 可以展示全部)查看:

我們先前學(xué)習(xí)過關(guān)于「分支」的概念,不過僅限于「本地分支」,今天我們多出了個(gè)「遠(yuǎn)程分支」,事情就相對(duì)復(fù)雜一些。

基本上,當(dāng)我們的版本控制流程加上了遠(yuǎn)程倉(cāng)庫(kù)之后,原本的分支就可以被拆成四種不同的概念:

遠(yuǎn)程追蹤分支

這個(gè)分支位于遠(yuǎn)程,目的是用來追蹤分支的變化情形。通常遠(yuǎn)程分支我們是獲取不到的。

本地追蹤分支

當(dāng)我們執(zhí)行 git clone 復(fù)制一個(gè)遠(yuǎn)程倉(cāng)庫(kù)后,所有遠(yuǎn)程追蹤分支會(huì)被下載回來,并且相對(duì)應(yīng)的建立起一個(gè)同名的本地追蹤分支。本地追蹤分支反映了遠(yuǎn)程倉(cāng)庫(kù)在我們最后一次與它通信時(shí)的狀態(tài)。

也就是這張圖里的:

紅色部分的 remotes/origin/main 就是本地追蹤分支,remotes 標(biāo)識(shí)是遠(yuǎn)程的意思,而 origin/ 是一種命名規(guī)范,main 就是分支名稱,遠(yuǎn)程倉(cāng)庫(kù)的名稱就是 origin(origin 是在 Git 版本控制中慣用的預(yù)設(shè)遠(yuǎn)程分支的參照名稱)。

遠(yuǎn)程分支有一個(gè)命名規(guī)范 —— 它們的格式是:

/

本地分支

在執(zhí)行 git branch 命令后所顯示的分支,就是所謂的「本地分支」,這些分支存在于本地,而這些分支又常被稱為 主題分支 (Topic Branch) 或 開發(fā)分支 (Development Branch),就是因?yàn)檫@些分支不會(huì)被推送到遠(yuǎn)程倉(cāng)庫(kù),主要用來做開發(fā)用途。

遠(yuǎn)程分支

顧名思義,遠(yuǎn)程分支就是在遠(yuǎn)程倉(cāng)庫(kù)中的分支,如此而已。如果我們用 GitHub 的話,我們是無法存取遠(yuǎn)程分支的。

雖然說「概念上」可以分為這四類,但其實(shí)這些分支就只是參照名稱而已,而前面提到的「本地追蹤分支」主要就是用來跟遠(yuǎn)程的分支做對(duì)應(yīng),我們不應(yīng)該直接在這些分支上建立版本 (雖然我們還是可以這么做,但強(qiáng)烈不建議亂搞),而是把這些「本地追蹤分支」視為是一種只讀的分支。

分支推送

clone 項(xiàng)目

經(jīng)過前面的學(xué)習(xí),我們知道在 clone 一個(gè)新的 Git 倉(cāng)庫(kù)時(shí),都會(huì)有一個(gè)預(yù)設(shè) main 分支。實(shí)際上,這個(gè)分支通常用來當(dāng)作目前系統(tǒng)的「穩(wěn)定版本」,也就是這個(gè)版本必須是干凈且高品質(zhì)的原始碼版本。所以,我們會(huì)要求所有人都不要用這個(gè)分支來建立任何版本,真正要建立版本時(shí),一定會(huì)通過「合并」的方式來進(jìn)行操作,以確保版本能夠更容易被追蹤。

在開發(fā)階段,我們通常會(huì)從 main 分支中新建一個(gè)分支用來開發(fā):

git checkout -b dev

此時(shí)我們新建分支并未跟遠(yuǎn)程倉(cāng)庫(kù)建立起任何關(guān)聯(lián),Git 可能不知道我們到底想推送到哪里(可能存在多個(gè)遠(yuǎn)程倉(cāng)庫(kù)),我們直接執(zhí)行 git push 命令的話 Git 就會(huì)提示錯(cuò)誤,所以我們要另外定義本地分支與遠(yuǎn)程倉(cāng)庫(kù)之間的關(guān)系。

要將本地分支起跟遠(yuǎn)程倉(cāng)庫(kù)的建立起對(duì)應(yīng)關(guān)系,只要在 git push 的時(shí)候加上 --set-upstream 參數(shù),即可將本地分支注冊(cè)進(jìn) .git/config 文件中,之后就能用 git push 就可以順利的推送上去。

.git/config 文件:

上圖中的 remote 和 merge 所代表的意思是:「當(dāng)我們想要將本地的 dev 分支推送到遠(yuǎn)程倉(cāng)庫(kù)時(shí),預(yù)設(shè)的遠(yuǎn)程倉(cāng)庫(kù)為 origin 這個(gè)(因?yàn)榭梢躁P(guān)聯(lián)多個(gè)遠(yuǎn)程倉(cāng)庫(kù),因此需要指定),然后推送的時(shí)候要將本次的變更合并到 merge 字段對(duì)應(yīng)這個(gè)遠(yuǎn)程分支里。

我們?cè)谝婚_始執(zhí)行 git clone 的時(shí)候,Git 就會(huì)預(yù)設(shè)幫我們建立好 main 分支的對(duì)應(yīng)關(guān)系,所以針對(duì) main 分支進(jìn)行操作時(shí),不需要額外加上 --set-upstream 就能使用。

本地關(guān)聯(lián)項(xiàng)目

如果我們是直接本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)建立關(guān)聯(lián)的,這個(gè)時(shí)候情況可能不一樣。

我們用回之前的 remoteDemo 示例,前面我們只介紹了如何與遠(yuǎn)程倉(cāng)庫(kù)建立關(guān)聯(lián)(git remote add),如果此時(shí)我們執(zhí)行 git branch -a 命令查看分支,可以發(fā)現(xiàn)并不存在本地追蹤分支,這是因?yàn)檫h(yuǎn)程倉(cāng)庫(kù)是空的,根本不存在任何分支:

此時(shí)我們就需要執(zhí)行 git push --set-upstream origin master 命令來建立與遠(yuǎn)程倉(cāng)庫(kù)的分支關(guān)聯(lián):

我們來詳細(xì)說明一下這個(gè)打?。?/p>

在執(zhí)行 push 命令時(shí)會(huì)掃描 .git/objects 目錄,也就是之前我們之前文章中提到的 Git 的對(duì)象,然后把這些對(duì)象放入到遠(yuǎn)程倉(cāng)庫(kù)中(同步版本)。但是由于遠(yuǎn)程倉(cāng)庫(kù)的空的,因此也創(chuàng)建了一個(gè) master 分支并在本地設(shè)置了一個(gè)追蹤分支。

我們查看 .git/refs 目錄就可以看到新建了一個(gè) remotes 目錄,里面的內(nèi)容就是本地追蹤分支。

這時(shí)候在執(zhí)行 git branch -a 命令就會(huì)發(fā)現(xiàn)存在紅色的 remotes/origin/master 分支了:

此時(shí)本地分支與本地追蹤分支都是同步的,我們可以通過 git log 命令來查看:

代碼拉取

這部分需要結(jié)合前面 遠(yuǎn)程分支 部分一起講解,我們?cè)?clone 一個(gè)遠(yuǎn)程倉(cāng)庫(kù)后,所有遠(yuǎn)程追蹤分支會(huì)被下載回來,并且相對(duì)應(yīng)的建立起一個(gè)同名的本地追蹤分支。如果遠(yuǎn)程倉(cāng)庫(kù)更新了幾個(gè)版本后,我們的本地追蹤分支相較于遠(yuǎn)程倉(cāng)庫(kù)其實(shí)就落后了幾個(gè)版本,此時(shí)我們就要更新本地追蹤分支的狀態(tài)。

fetch

git fetch 命令完成了僅有的但是很重要的兩步:

從遠(yuǎn)程倉(cāng)庫(kù)下載本地倉(cāng)庫(kù)中缺失的提交記錄更新本地追蹤分支指針(如 remote/origin/main )

git fetch 實(shí)際上將本地倉(cāng)庫(kù)中的遠(yuǎn)程分支更新成了遠(yuǎn)程倉(cāng)庫(kù)相應(yīng)分支最新的狀態(tài)。

前面我們說過的,本地追蹤分支反映了遠(yuǎn)程倉(cāng)庫(kù)在我們最后一次與它通信時(shí)的狀態(tài),git fetch 就是我們與遠(yuǎn)程倉(cāng)庫(kù)通信的方式!

我們用一個(gè)可視化來更好理解 fetch 命令:

我們一開始 clone 項(xiàng)目后分支狀態(tài)類似上面這張圖,此時(shí)我們?cè)谶h(yuǎn)程倉(cāng)庫(kù)中提交一個(gè)版本后在本地倉(cāng)庫(kù)中執(zhí)行 git fetch 命令。

可以看到只有本地追蹤分支( remote/origin/main )才更新了狀態(tài),本地的 main 分支并沒有更新,如果我們需要更新本地 main 分支,需要手動(dòng)使用 git merge 命令去合并本地追蹤分支( remote/origin/main )。

示例

概念理解了我們來看一下示例:

本地分支與本地追蹤分支都是同步的(最新「commit 對(duì)象」的 hash 值為 bcbe312…),此時(shí)我們?cè)谶h(yuǎn)程倉(cāng)庫(kù)中提交一次 commit:

遠(yuǎn)程倉(cāng)庫(kù)最新的 commit hash 值為 62ed650。

我們執(zhí)行 git fetch 命令更新本地追蹤分支:

此時(shí) remotes/origin/master 領(lǐng)先 master 分支一個(gè)提交,我們切換到 remotes/origin/master 分支查看提交日志能更清楚的看到差異:

在這種情況我們就需要執(zhí)行 git merge remotes/origin/master 命令來更新 master 分支:

pull

git pull 就是 git fetch 和 git merge 的縮寫,會(huì)自動(dòng)幫我們更新本地追蹤分支和本地分支。

在這篇文章里只簡(jiǎn)單介紹一下 fetch、pull 的操作,后續(xù)我們會(huì)詳細(xì)介紹。

柚子快報(bào)激活碼778899分享:使用 GitHub 遠(yuǎn)程倉(cāng)庫(kù)

http://yzkb.51969.com/

相關(guān)文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18682315.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄