程序猿的必備神器:Git遠(yuǎn)程倉(cāng)庫(kù)的使用手法詳解

作為一個(gè)程序猿,如果說你對(duì)這個(gè)GitHub不了解,那么就很尷尬了!

學(xué)會(huì)使用這個(gè)東東是很有必要的!

至于為什么往下看就是了。

如果看完,你有了想法,就去試著去GitHub注冊(cè)個(gè)賬號(hào),然后安裝一下,再試著操作一遍!

注:以下命令是在Linux環(huán)境下的命令,記得哦,不過也是可以在windows安裝好的Git Bash中使用,挺方便的!

Git的誕生

同生活中的許多偉大事件一樣,Git 誕生于一個(gè)極富紛爭(zhēng)大舉創(chuàng)新的年代。1991年,Linus創(chuàng)建了開源的Linux,并且有著為數(shù)眾多的參與者。雖然有世界各地的志愿者為L(zhǎng)inux編寫代碼,但是絕大多數(shù)的 Linux 內(nèi)核維護(hù)工作都花在了提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。在這期間,所有的源代碼都是由Linus手工合并。因?yàn)長(zhǎng)inus堅(jiān)定地反對(duì)CVS和SVN,這些集中式的版本控制系統(tǒng)(集中式和分布式我們會(huì)在接下來的內(nèi)容講解)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。雖然有一些商用的版本控制系統(tǒng),比CVS、SVN好用,但那是付費(fèi)的,和Linux的開源精神不符。

不過,到了2002 年,Linux系統(tǒng)已經(jīng)發(fā)展了十年了,代碼庫(kù)之大讓Linus很難繼續(xù)通過手工方式管理了,社區(qū)的弟兄們也對(duì)這種方式表達(dá)了強(qiáng)烈不滿,于是整個(gè)項(xiàng)目組啟用了一個(gè)商業(yè)版本的分布式版本控制系統(tǒng) BitKeeper 來管理和維護(hù)代碼。BitKeeper的東家BitMover公司出于人道主義精神,授權(quán)Linux社區(qū)免費(fèi)使用這個(gè)版本控制系統(tǒng)。安定團(tuán)結(jié)的大好局面在2005年被打破,開發(fā)BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,原因是Linux社區(qū)牛人聚集,開發(fā)Samba的Andrew試圖破解BitKeeper的協(xié)議,這么干的其實(shí)也不只他一個(gè),但是被BitMover公司發(fā)現(xiàn)了,于是BitMover公司收回了Linux社區(qū)的免費(fèi)使用權(quán)。這就迫使Linux開源社區(qū)( 特別是Linux的締造者 Linus Torvalds )不得不吸取教訓(xùn),只有開發(fā)一套屬于自己的版本控制系統(tǒng)才不至于重蹈覆轍。

他們對(duì)新的系統(tǒng)制訂了若干目標(biāo):速度 、 簡(jiǎn)單的設(shè)計(jì) 、 對(duì)非線性開發(fā)模式的強(qiáng)力支持(允許上千個(gè)并行開發(fā)的分支)、完全分布式、有能力高效管理類似 Linux 內(nèi)核一樣的超大規(guī)模項(xiàng)目(速度和數(shù)據(jù)量)。自誕生于 2005 年以來,Git 日臻成熟完善,迅速成為最流行的分布式版本控制系統(tǒng),在高度易用的同時(shí),仍然保留著初期設(shè)定的目標(biāo)。它的速度飛快,極其適合管理大項(xiàng)目,它還有著令人難以置信的非線性分支管理系統(tǒng),可以應(yīng)付各種復(fù)雜的項(xiàng)目開發(fā)需求。2008年,GitHub網(wǎng)站上線了,它為開源項(xiàng)目免費(fèi)提供Git存儲(chǔ),無數(shù)開源項(xiàng)目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

歷史就是這么偶然,如果不是當(dāng)年BitMover公司威脅Linux社區(qū),可能現(xiàn)在我們就沒有免費(fèi)而超級(jí)好用的Git了。

Linus一直痛恨的CVS及SVN都是集中式的版本控制系統(tǒng),而Git是分布式版本控制系統(tǒng),集中式和分布式版本控制系統(tǒng)有什么區(qū)別呢?

先說集中式版本控制系統(tǒng),版本庫(kù)是集中存放在中央服務(wù)器的,而大家工作的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始工作,工作完成,再把自己的修訂推送給中央服務(wù)器。這類系統(tǒng),都有一個(gè)單一的集中管理的服務(wù)器,保存所有文件的修訂版本,而協(xié)同工作的人們都通過客戶端連到這臺(tái)服務(wù)器,取出最新的文件或者提交更新。

那分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同呢?首先,分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù),這樣,你工作的時(shí)候,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編?kù)就在你自己的電腦上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時(shí),你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。

和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫(kù),某一個(gè)人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題,所有人都沒法干活了。

在實(shí)際使用分布式版本控制系統(tǒng)的時(shí)候,其實(shí)很少在兩人之間的電腦上推送版本庫(kù)的修改,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi),兩臺(tái)電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機(jī)。因此,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,但這個(gè)服務(wù)器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

許多這類系統(tǒng)都可以指定和若干不同的遠(yuǎn)端代碼倉(cāng)庫(kù)進(jìn)行交互。籍此,你就可以在同一個(gè)項(xiàng)目中,分別和不同工作小組的人相互協(xié)作。你可以根據(jù)需要設(shè)定不同的協(xié)作流程,比如層次模型式的工作流,而這在以前的集中式系統(tǒng)中是無法實(shí)現(xiàn)的。

Git的配置

使用Git的第一件事就是設(shè)置你的名字和email,這些就是你在提交commit時(shí)的簽名,每次提交記錄里都會(huì)包含這些信息。使用git config命令進(jìn)行配置:

$ git?config --global user.name "Scott Chacon"

$ git?config --global user.email "schacon@gmail.com"

執(zhí)行了上面的命令后,會(huì)在家目錄(/home/shiyanlou)下建立一個(gè)叫.gitconfig?的文件(該文件為隱藏文件,需要使用ls -al查看到). 內(nèi)容一般像下面這樣,可以使用vim或cat查看文件內(nèi)容:

$ cat ~/.gitconfig

[user]

????????email = schacon@gmail.com

????????name = Scott Chacon

上面的配置文件就是Git全局配置的文件,一般配置方法是git config --global <配置名稱> <配置的值>。

如果你想使項(xiàng)目里的某個(gè)值與前面的全局設(shè)置有區(qū)別(例如把私人郵箱地址改為工作郵箱),你可以在項(xiàng)目中使用git config?命令不帶?--global?選項(xiàng)來設(shè)置. 這會(huì)在你當(dāng)前的項(xiàng)目目錄下創(chuàng)建?.git/config,從而使用針對(duì)當(dāng)前項(xiàng)目的配置。

獲得一個(gè)Git倉(cāng)庫(kù)

既然我們現(xiàn)在把一切都設(shè)置好了,那么我們需要一個(gè)Git倉(cāng)庫(kù)。有兩種方法可以得到它:一種是從已有的Git倉(cāng)庫(kù)中clone (克隆,復(fù)制);還有一種是新建一個(gè)倉(cāng)庫(kù),把未進(jìn)行版本控制的文件進(jìn)行版本控制

Clone一個(gè)倉(cāng)庫(kù)

為了得到一個(gè)項(xiàng)目的拷貝(copy),我們需要知道這個(gè)項(xiàng)目倉(cāng)庫(kù)的地址(Git URL). Git能在許多協(xié)議下使用,所以Git URL可能以ssh://, http(s)://, git://. 有些倉(cāng)庫(kù)可以通過不只一種協(xié)議來訪問。

我們?cè)趃ithub.com上提供了一個(gè)名字為gitproject的供大家測(cè)試的公有倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)可以使用下面方式進(jìn)行clone:

clone 操作完成后,會(huì)發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè)gitproject文件夾,這個(gè)文件夾里的內(nèi)容就是我們剛剛clone下來的代碼。由于當(dāng)前`gitproject僅是測(cè)試項(xiàng)目,里面僅有一個(gè)README.md文件。

$?cd?gitproject/

(master)$?ls

README.md

細(xì)心的同學(xué)可以發(fā)現(xiàn)在命令提示符$前面多了個(gè)(master)。這是由于實(shí)驗(yàn)樓的Linux使用的是zsh Shell,zsh會(huì)判斷當(dāng)前的目錄是否有Git倉(cāng)庫(kù),如果是的話則自動(dòng)把目前所在的git分支顯示在提示符中。Git 分支的概念我們會(huì)在稍后介紹。

初始化一個(gè)新的倉(cāng)庫(kù)

可以對(duì)一個(gè)已存在的文件夾用下面的命令讓它置于Git的版本控制管理之下。

創(chuàng)建代碼目錄project:

$?cd?/home/shiyanlou/

$?mkdir project

進(jìn)入到代碼目錄,創(chuàng)建并初始化Git倉(cāng)庫(kù):

$?cd?project

$?git init

Git會(huì)輸出:

Initialized empty Git repository in?/home/shiyanlou/project/.git/

通過ls -la命令會(huì)發(fā)現(xiàn)project目錄下會(huì)有一個(gè)名叫.git?的目錄被創(chuàng)建,這意味著一個(gè)倉(cāng)庫(kù)被初始化了。可以進(jìn)入到.git目錄查看下有哪些內(nèi)容。

正常的工作流程

git的基本流程如下:

1.?創(chuàng)建或修改文件

2.?使用git add命令添加新創(chuàng)建或修改的文件到本地的緩存區(qū)(Index)

3.?使用git commit命令提交到本地代碼庫(kù)

4.?(可選,有的時(shí)候并沒有可以同步的遠(yuǎn)端代碼庫(kù))使用git push命令將本地代碼庫(kù)同步到遠(yuǎn)端代碼庫(kù)

創(chuàng)建和修改文件

進(jìn)入我們剛才建立的project目錄,分別創(chuàng)建文件file1,file2,file3:

$?cd?project

$?touch file1 file2 file3

修改文件,可以使用vim編輯內(nèi)容,也可以直接echo添加測(cè)試內(nèi)容。

$ echo "test"?>> file1

$ echo "test"?>> file2

$ echo "test"?>> file3

此時(shí)可以使用git status命令查看當(dāng)前git倉(cāng)庫(kù)的狀態(tài):

$ git status

On branch master

Initial commit

Untracked files:

???(use?"git add <file>...") to?include?in?what will be committed)

???????file1

???????file2

???????file3

nothing?added to?commit?but untracked files present?(use?"git add"?to?track)

可以發(fā)現(xiàn),有三個(gè)文件處于untracked狀態(tài),下一步我們就需要用git add命令將他們加入到緩存區(qū)(Index)。

使用git add加入緩存區(qū)

使用git add命令將新建的文件添加到:

$ git add?file1 file2 file3

然后再次執(zhí)行g(shù)it status就會(huì)發(fā)現(xiàn)新的變化:

$ git status

On branch master

Initial commit

Changes to?be committed:

????(use?"git rm --cached <file>..."?to?unstage)

???????new?file: file1

???????new?file: file2

???????new?file: file3

你現(xiàn)在為commit做好了準(zhǔn)備,你可以使用?git diff?命令再加上?--cached?參數(shù),看看緩存區(qū)中哪些文件被修改了。進(jìn)入到git diff --cached界面后需要輸入q才可以退出:

$ git diff --cached

如果沒有--cached參數(shù),git diff?會(huì)顯示當(dāng)前你所有已做的但沒有加入到索引里的修改。

如果你要做進(jìn)一步的修改, 那就繼續(xù)做, 做完后就把新修改的文件加入到緩存區(qū)中。

使用git commit提交修改

當(dāng)所有新建,修改的文件都被添加到了緩存區(qū),我們就要使用git commit提交到本地倉(cāng)庫(kù):

$ git commit -m "add 3 files"

需要使用-m添加本次修改的注釋,完成后就會(huì)記錄一個(gè)新的項(xiàng)目版本。除了用git add?命令,我們還可以用下面的命令將所有沒有加到緩存區(qū)的修改也一起提交,但-a命令不會(huì)添加新建的文件。

$ git commit -a?-m "add 3 files"

再次輸入git status查看狀態(tài),會(huì)發(fā)現(xiàn)當(dāng)前的代碼庫(kù)已經(jīng)沒有待提交的文件了,緩存區(qū)已經(jīng)被清空。

至此,我們完成了第一次代碼提交,這次提交的代碼中我們創(chuàng)建了三個(gè)新文件。需要注意的是如果是修改文件,也需要使用git add命令添加到緩存區(qū)才可以提交。如果是刪除文件,則直接使用git rm命令刪除后會(huì)自動(dòng)將已刪除文件的信息添加到緩存區(qū),git commit提交后就會(huì)將本地倉(cāng)庫(kù)中的對(duì)應(yīng)文件刪除。

這時(shí)如果我們希望將本地倉(cāng)庫(kù)關(guān)聯(lián)到遠(yuǎn)端服務(wù)器,我們可以使用?git remote?命令,不同于剛剛的?git clone?命令,直接將遠(yuǎn)端的倉(cāng)庫(kù)克隆下來。 我們當(dāng)前的倉(cāng)庫(kù)是使用?git init?初始化的本地倉(cāng)庫(kù),所以我們需要將本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián),使用如下命令(需要修改下面的遠(yuǎn)程倉(cāng)庫(kù)地址為自己的倉(cāng)庫(kù)地址):

對(duì)于上述命令而言,git remote add?命令用于添加遠(yuǎn)程主機(jī),origin?是主機(jī)名,此處我們可以自定義,不一定非要使用?origin,而

是我自己的遠(yuǎn)程倉(cāng)庫(kù),此處需要替換為自己的遠(yuǎn)程倉(cāng)庫(kù)地址

這個(gè)時(shí)候如果本地的倉(cāng)庫(kù)連接到了遠(yuǎn)程Git服務(wù)器,可以使用下面的命令將本地倉(cāng)庫(kù)同步到遠(yuǎn)端服務(wù)器:

# 需要輸入倉(cāng)庫(kù)對(duì)應(yīng)的用戶名和密碼

$ git push?origin master

分支與合并

Git 的分支可以讓你在主線(master分支)之外進(jìn)行代碼提交,同時(shí)又不會(huì)影響代碼庫(kù)主線。分支的作用體現(xiàn)在多人協(xié)作開發(fā)中,比如一個(gè)團(tuán)隊(duì)開發(fā)軟件,你負(fù)責(zé)獨(dú)立的一個(gè)功能需要一個(gè)月的時(shí)間來完成,你就可以創(chuàng)建一個(gè)分支,只把該功能的代碼提交到這個(gè)分支,而其他同事仍然可以繼續(xù)使用主線開發(fā),你每天的提交不會(huì)對(duì)他們?cè)斐扇魏斡绊?。?dāng)你完成功能后,測(cè)試通過再把你的功能分支合并到主線。

創(chuàng)建分支

一個(gè)Git倉(cāng)庫(kù)可以維護(hù)很多開發(fā)分支。現(xiàn)在我們來創(chuàng)建一個(gè)新的叫 experimental的分支:

$ git branch experimental

運(yùn)行g(shù)it branch命令可以查看當(dāng)前的分支列表,以及目前的開發(fā)環(huán)境處在哪個(gè)分支上:

$?git branch

?experimental

* master

切換分支

experimental 分支是你剛才創(chuàng)建的,master分支是Git系統(tǒng)默認(rèn)創(chuàng)建的主分支。星號(hào)標(biāo)識(shí)了你當(dāng)工作在哪個(gè)分支下,輸入git checkout 分支名可以切換到其他分支:

$ git checkout experimental

Switched to?branch 'experimental'

切換到experimental分支,切換完成后,先編輯里面的一個(gè)文件,再提交(commit)改動(dòng),最后切換回 “master”分支:

# 修改文件file1

$ echo "update"?>> file1

# 查看當(dāng)前狀態(tài)

$ git status

# 添加并提交file1的修改

$ git add file1

$ git commit -m "update file1"

# 查看file1的內(nèi)容

$ cat file1

test

update

# 切換到master分支

$ git checkout master

查看下file1中的內(nèi)容會(huì)發(fā)現(xiàn)剛才做的修改已經(jīng)看不到了。因?yàn)閯偛诺男薷臅r(shí)在experimental分支下,現(xiàn)在切換回了master分支,目錄下的文件都是master分支上的文件了。

合并分支

現(xiàn)在可以在master分支下再作一些不同的修改:

# 修改文件file2

$ echo "update again"?>> file2

# 查看當(dāng)前狀態(tài)

$ git status

# 添加并提交file2的修改

$ git add file2

$ git commit -m "update file2 on master"

# 查看file2的內(nèi)容

$ cat file2

test

update again

這時(shí),兩個(gè)分支就有了各自不同的修改,分支的內(nèi)容都已經(jīng)不同,如何將多個(gè)分支進(jìn)行合并呢?

可以通過下面的git merge命令來合并experimental到主線分支master:

# 切換到master分支

$ git checkout master

# 將experimental分支合并到master

$?git merge -m 'merge experimental branch' experimental

-m參數(shù)仍然是需要填寫合并的注釋信息。

由于兩個(gè) branch 修改了兩個(gè)不同的文件,所以合并時(shí)不會(huì)有沖突,執(zhí)行上面的命令后合并就完成了。

如果有沖突,比如兩個(gè)分支都改了一個(gè)文件 file3,則合并時(shí)會(huì)失敗。首先我們?cè)趍aster分支上修改file3文件并提交:

# 切換到master分支

$ git checkout master

# 修改file3文件

$ echo "master: update file3"?>> file3

# 提交到master分支

$ git commit -a -m 'update file3 on master'

然后切換到experimental,修改file3并提交:

# 切換到experimental分支

$ git checkout experimental

# 修改file3文件

$ echo "experimental: update file3"?>> file3

# 提交到experimental分支

$ git commit -a -m 'update file3 on experimental'

切換到master進(jìn)行合并:

$ git checkout master

$ git merge experimental

Auto-merging file3

CONFLICT?(content): Merge conflict?in?file3

Automatic merge failed; fix conflicts and?then?commit?the result.

合并失敗后先用git status查看狀態(tài),會(huì)發(fā)現(xiàn)file3顯示為both modified,查看file3內(nèi)容會(huì)發(fā)現(xiàn):

$ cat file3

test

<<<<<<< HEAD

master: update file3

=======

experimental: update file3

>>>>>>> experimental

上面的內(nèi)容也可以使用git diff查看,先前已經(jīng)提到git diff不加參數(shù)可以顯示未提交到緩存區(qū)中的修改內(nèi)容。

可以看到?jīng)_突的內(nèi)容都被添加到了file3中,我們使用vim編輯這個(gè)文件,去掉git自動(dòng)產(chǎn)生標(biāo)志沖突的<<<<<<等符號(hào)后,根據(jù)需要只保留我們需要的內(nèi)容后保存,然后使用git add file3和git commit命令來提交合并后的file3內(nèi)容,這個(gè)過程是手動(dòng)解決沖突的流程。

# 編輯沖突文件

$ vim file3

# 提交修改后的文件

$ git add file3

$ git commit -m 'merge file3'

刪除分支

當(dāng)我們完成合并后,不再需要experimental時(shí),可以使用下面的命令刪除:

$ git branch -d experimental

git branch -d只能刪除那些已經(jīng)被當(dāng)前分支的合并的分支. 如果你要強(qiáng)制刪除某個(gè)分支的話就用git branch –D

撤銷一個(gè)合并

如果你覺得你合并后的狀態(tài)是一團(tuán)亂麻,想把當(dāng)前的修改都放棄,你可以用下面的命令回到合并之前的狀態(tài):

$ git reset --hard HEAD^

# 查看file3的內(nèi)容,已經(jīng)恢復(fù)到合并前的master上的文件內(nèi)容

$ cat file3

查看日志

git log命令可以顯示所有的提交(commit):

$?git log

如果提交的歷史紀(jì)錄很長(zhǎng),回車會(huì)逐步顯示,輸入q可以退出。

git log有很多選項(xiàng),可以使用git help log查看,例如下面的命令就是找出所有從"v2.5“開始在 fs 目錄下的所有 Makefile 的修改(這個(gè)只是舉例,不用操作):

$?git log?v2.5.. Makefile fs/

Git會(huì)根據(jù)git log命令的參數(shù),按時(shí)間順序顯示相關(guān)的提交(commit)。

日志統(tǒng)計(jì)

git log命令可以顯示所有的提交(commit):

$?git log

如果提交的歷史紀(jì)錄很長(zhǎng),回車會(huì)逐步顯示,輸入q可以退出。

git log有很多選項(xiàng),可以使用git help log查看,例如下面的命令就是找出所有從"v2.5“開始在 fs 目錄下的所有 Makefile 的修改(這個(gè)只是舉例,不用操作):

$?git log?v2.5.. Makefile fs/

Git會(huì)根據(jù)git log命令的參數(shù),按時(shí)間順序顯示相關(guān)的提交(commit)。

格式化日志

你可以按你的要求來格式化日志輸出。--pretty?參數(shù)可以使用若干表現(xiàn)格式,如oneline:

$ git log?--pretty=oneline

或者你也可以使用?short?格式:

$ git log?--pretty=short

你也可用medium,full,fuller,email?或raw。 如果這些格式不完全符合你的需求, 你也可以用--pretty=format參數(shù)定義格式。

--graph?選項(xiàng)可以可視化你的提交圖(commit graph),會(huì)用ASCII字符來畫出一個(gè)很漂亮的提交歷史(commit history)線:

$ git log?--graph --pretty=oneline

日志排序

日志記錄可以按不同的順序來顯示。如果你要指定一個(gè)特定的順序,可以為git log命令添加順序參數(shù)。

按默認(rèn)情況,提交會(huì)按逆時(shí)間順序顯示,可以指定--topo-order參數(shù),讓提交按拓?fù)漤樞騺盹@示(就是子提交在它們的父提交前顯示):

$ git log?--pretty=format:'%h?: %s' --topo-order?--graph

你也可以用?--reverse參數(shù)來逆向顯示所有提交日志。

總結(jié)命令

本節(jié)講解了幾個(gè)基本命令:

·?git config:配置相關(guān)信息

·?git clone:復(fù)制倉(cāng)庫(kù)

·?git init:初始化倉(cāng)庫(kù)

·?git add:添加更新內(nèi)容到索引中

·?git diff:比較內(nèi)容

·?git status:獲取當(dāng)前項(xiàng)目狀況

·?git commit:提交

·?git branch:分支相關(guān)

·?git checkout:切換分支

·?git merge:合并分支

·?git reset:恢復(fù)版本

·?git log:查看日志

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 初始化git 配置git 使用Git的第一件事就是設(shè)置你的名字和email,這些就是你在提交commit時(shí)的簽名,...
    MiracleJQ閱讀 1,556評(píng)論 0 0
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 16,210評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來...
    sunnyghx閱讀 4,155評(píng)論 0 11
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,843評(píng)論 4 54
  • 由南門變北門,由農(nóng)村到縣城,由高級(jí)到中級(jí),……由白衣二中升級(jí)到蘆花實(shí)驗(yàn)中學(xué)。 時(shí)光飛逝,轉(zhuǎn)瞬二十年,好像就在昨天。...
    放飛心情_ac90閱讀 464評(píng)論 0 0

友情鏈接更多精彩內(nèi)容