git安裝教程和git命令使用詳解

原文出處:涂根華的博客

一:Git是什么?

Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)檀轨。

二:SVN與Git的最主要的區(qū)別狭吼?

SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務(wù)器的辐宾,而干活的時(shí)候,用的都是自己的電腦膨蛮,所以首先要從中央服務(wù)器哪里得到最新的版本叠纹,然后干活,

干完后敞葛,需要把自己做完的活推送到中央服務(wù)器誉察。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)還可以惹谐,帶寬夠大持偏,速度夠快驼卖,如果在互聯(lián)網(wǎng)下,如果網(wǎng)

速慢的話鸿秆,就納悶了酌畜。

Git是分布式版本控制系統(tǒng),那么它就沒有中央服務(wù)器的卿叽,每個(gè)人的電腦就是一個(gè)完整的版本庫桥胞,這樣,工作的時(shí)候就不需要聯(lián)網(wǎng)了考婴,因?yàn)榘姹径际窃谧约旱碾娔X

上贩虾。既然每個(gè)人的電腦都有一個(gè)完整的版本庫,那多個(gè)人如何協(xié)作呢沥阱?比如說自己在電腦上改了文件A缎罢,其他人也在電腦上改了文件A,這時(shí)考杉,你們兩之間只需把各

自的修改推送給對(duì)方策精,就可以互相看到對(duì)方的修改了。

三:在windows上如何安裝Git奔则?

msysgit是 windows版的Git,如下:

需要從網(wǎng)上下載一個(gè)蛮寂,然后進(jìn)行默認(rèn)安裝即可。安裝完成后易茬,在開始菜單里面找到 “Git –> Git Bash”,如下:

會(huì)彈出一個(gè)類似的命令窗口的東西,就說明Git安裝成功及老。如下:

安裝完成后抽莱,還需要最后一步設(shè)置,在命令行輸入如下:

因?yàn)镚it是分布式版本控制系統(tǒng)骄恶,所以需要填寫用戶名和郵箱作為一個(gè)標(biāo)識(shí)食铐。

注意:git config? –global 參數(shù),有了這個(gè)參數(shù)僧鲁,表示你這臺(tái)機(jī)器上所有的Git倉庫都會(huì)使用這個(gè)配置虐呻,當(dāng)然你也可以對(duì)某個(gè)倉庫指定的不同的用戶名和郵箱。

四:如何操作寞秃?

一:創(chuàng)建版本庫斟叼。

什么是版本庫?版本庫又名倉庫春寿,英文名repository,你可以簡單的理解一個(gè)目錄朗涩,這個(gè)目錄里面的所有文件都可以被Git管理起來,每個(gè)文件的修改绑改,刪除谢床,Git都能跟蹤兄一,以便任何時(shí)刻都可以追蹤歷史,或者在將來某個(gè)時(shí)刻還可以將文件”還原”识腿。

所以創(chuàng)建一個(gè)版本庫也非常簡單出革,如下我是D盤 –> www下 目錄下新建一個(gè)testgit版本庫。

pwd 命令是用于顯示當(dāng)前的目錄渡讼。

1. 通過命令 git init 把這個(gè)目錄變成git可以管理的倉庫骂束,如下:

這時(shí)候你當(dāng)前testgit目錄下會(huì)多了一個(gè).git的目錄,這個(gè)目錄是Git來跟蹤管理版本的硝全,沒事千萬不要手動(dòng)亂改這個(gè)目錄里面的文件栖雾,否則,會(huì)把git倉庫給破壞了伟众。如下:

2. 把文件添加到版本庫中析藕。

首先要明確下,所有的版本控制系統(tǒng)凳厢,只能跟蹤文本文件的改動(dòng)账胧,比如txt文件,網(wǎng)頁先紫,所有程序的代碼等治泥,Git也不列外,版本控制系統(tǒng)可以告訴你每次的改

動(dòng)遮精,但是圖片居夹,視頻這些二進(jìn)制文件,雖能也能由版本控制系統(tǒng)管理本冲,但沒法跟蹤文件的變化准脂,只能把二進(jìn)制文件每次改動(dòng)串起來,也就是知道圖片從1kb變成

2kb檬洞,但是到底改了啥狸膏,版本控制也不知道。

下面先看下demo如下演示:

我在版本庫testgit目錄下新建一個(gè)記事本文件 readme.txt 內(nèi)容如下:11111111

第一步:使用命令 git add readme.txt添加到暫存區(qū)里面去添怔。如下:

如果和上面一樣湾戳,沒有任何提示,說明已經(jīng)添加成功了广料。

第二步:用命令 git commit告訴Git砾脑,把文件提交到倉庫。

現(xiàn)在我們已經(jīng)提交了一個(gè)readme.txt文件了性昭,我們下面可以通過命令git status來查看是否還有文件未提交拦止,如下:

說明沒有任何文件未提交,但是我現(xiàn)在繼續(xù)來改下readme.txt內(nèi)容,比如我在下面添加一行2222222222內(nèi)容汹族,繼續(xù)使用git status來查看下結(jié)果萧求,如下:

上面的命令告訴我們 readme.txt文件已被修改,但是未被提交的修改顶瞒。

接下來我想看下readme.txt文件到底改了什么內(nèi)容夸政,如何查看呢?可以使用如下命令:

git diff readme.txt 如下:

如上可以看到榴徐,readme.txt文件內(nèi)容從一行11111111改成 二行 添加了一行22222222內(nèi)容守问。

知道了對(duì)readme.txt文件做了什么修改后,我們可以放心的提交到倉庫了坑资,提交修改和提交文件是一樣的2步(第一步是git add? 第二步是:git commit)耗帕。

如下:

二:版本回退:

如上,我們已經(jīng)學(xué)會(huì)了修改文件袱贮,現(xiàn)在我繼續(xù)對(duì)readme.txt文件進(jìn)行修改仿便,再增加一行

內(nèi)容為33333333333333.繼續(xù)執(zhí)行命令如下:

現(xiàn)在我已經(jīng)對(duì)readme.txt文件做了三次修改了,那么我現(xiàn)在想查看下歷史記錄攒巍,如何查呢嗽仪?我們現(xiàn)在可以使用命令 git log 演示如下所示:

git

log命令顯示從最近到最遠(yuǎn)的顯示日志,我們可以看到最近三次提交柒莉,最近的一次是,增加內(nèi)容為333333.上一次是添加內(nèi)容222222闻坚,第一次默認(rèn)是

111111.如果嫌上面顯示的信息太多的話,我們可以使用命令 git log –pretty=oneline 演示如下:

現(xiàn)在我想使用版本回退操作兢孝,我想把當(dāng)前的版本回退到上一個(gè)版本窿凤,要使用什么命令呢?可以使用如下2種命令跨蟹,第一種是:git reset? –hard

HEAD^ 那么如果要回退到上上個(gè)版本只需把HEAD^ 改成 HEAD^^

以此類推卷玉。那如果要回退到前100個(gè)版本的話,使用上面的方法肯定不方便喷市,我們可以使用下面的簡便命令操作:git reset? –hard

HEAD~100 即可。未回退之前的readme.txt內(nèi)容如下:

如果想回退到上一個(gè)版本的命令如下操作:

再來查看下 readme.txt內(nèi)容如下:通過命令cat readme.txt查看

可以看到威恼,內(nèi)容已經(jīng)回退到上一個(gè)版本了品姓。我們可以繼續(xù)使用git log 來查看下歷史記錄信息,如下:

我們看到 增加333333 內(nèi)容我們沒有看到了箫措,但是現(xiàn)在我想回退到最新的版本腹备,如:有333333的內(nèi)容要如何恢復(fù)呢?我們可以通過版本號(hào)回退斤蔓,使用命令方法如下:

git reset? –hard 版本號(hào) 植酥,但是現(xiàn)在的問題假如我已經(jīng)關(guān)掉過一次命令行或者333內(nèi)容的版本號(hào)我并不知道呢?要如何知道增加3333內(nèi)容的版本號(hào)呢?可以通過如下命令即可獲取到版本號(hào):git reflog? 演示如下:

通過上面的顯示我們可以知道友驮,增加內(nèi)容3333的版本號(hào)是 6fcfc89.我們現(xiàn)在可以命令

git reset? –hard 6fcfc89來恢復(fù)了漂羊。演示如下:

可以看到 目前已經(jīng)是最新的版本了。

三:理解工作區(qū)與暫存區(qū)的區(qū)別卸留?

工作區(qū):就是你在電腦上看到的目錄走越,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)〕苌或者以后需要再新建的目錄文件等等都屬于工作區(qū)范疇旨指。

版本庫(Repository)工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不屬于工作區(qū),這是版本庫喳整。其中版本庫里面存了很多東西谆构,其中最重要的就是stage(暫存區(qū)),還有Git為我們自動(dòng)創(chuàng)建了第一個(gè)分支master,以及指向master的一個(gè)指針HEAD框都。

我們前面說過使用Git提交文件到版本庫有兩步:

第一步:是使用 git add 把文件添加進(jìn)去搬素,實(shí)際上就是把文件添加到暫存區(qū)。

第二步:使用git commit提交更改瞬项,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支上蔗蹋。

我們繼續(xù)使用demo來演示下:

我們?cè)趓eadme.txt再添加一行內(nèi)容為4444444,接著在目錄下新建一個(gè)文件為test.txt 內(nèi)容為test囱淋,我們先用命令 git status來查看下狀態(tài)猪杭,如下:

現(xiàn)在我們先使用git add 命令把2個(gè)文件都添加到暫存區(qū)中,再使用git status來查看下狀態(tài)妥衣,如下:

接著我們可以使用git commit一次性提交到分支上皂吮,如下:

四:Git撤銷修改和刪除文件操作。

一:撤銷修改:

比如我現(xiàn)在在readme.txt文件里面增加一行 內(nèi)容為555555555555税手,我們先通過命令查看如下:

在我未提交之前蜂筹,我發(fā)現(xiàn)添加5555555555555內(nèi)容有誤,所以我得馬上恢復(fù)以前的版本芦倒,現(xiàn)在我可以有如下幾種方法可以做修改:

第一:如果我知道要?jiǎng)h掉那些內(nèi)容的話艺挪,直接手動(dòng)更改去掉那些需要的文件,然后add添加到暫存區(qū)兵扬,最后commit掉麻裳。

第二:我可以按以前的方法直接恢復(fù)到上一個(gè)版本。使用 git reset? –hard HEAD^

但是現(xiàn)在我不想使用上面的2種方法器钟,我想直接想使用撤銷命令該如何操作呢津坑?首先在做撤銷之前祖驱,我們可以先用 git status 查看下當(dāng)前的狀態(tài)竞滓。如下所示:

可以發(fā)現(xiàn)甲脏,Git會(huì)告訴你,git checkout? — file 可以丟棄工作區(qū)的修改锹雏,如下命令:

git checkout? —? readme.txt,如下所示:

命令 git checkout –readme.txt 意思就是律歼,把readme.txt文件在工作區(qū)做的修改全部撤銷胡桃,這里有2種情況旁蔼,如下:

readme.txt自動(dòng)修改后,還沒有放到暫存區(qū)孵睬,使用 撤銷修改就回到和版本庫一模一樣的狀態(tài)播歼。

另外一種是readme.txt已經(jīng)放入暫存區(qū)了,接著又作了修改掰读,撤銷修改就回到添加暫存區(qū)后的狀態(tài)秘狞。

對(duì)于第二種情況,我想我們繼續(xù)做demo來看下蹈集,假如現(xiàn)在我對(duì)readme.txt添加一行 內(nèi)容為6666666666666烁试,我git add 增加到暫存區(qū)后,接著添加內(nèi)容7777777拢肆,我想通過撤銷命令讓其回到暫存區(qū)后的狀態(tài)减响。如下所示:

注意:命令git checkout — readme.txt 中的 — 很重要,如果沒有 — 的話郭怪,那么命令變成創(chuàng)建分支了支示。

二:刪除文件。

假如我現(xiàn)在版本庫testgit目錄添加一個(gè)文件b.txt,然后提交鄙才。如下:

如上:一般情況下颂鸿,可以直接在文件目錄中把文件刪了,或者使用如上rm命令:rm b.txt 攒庵,如果我想徹底從版本庫中刪掉了此文件的話嘴纺,可以再執(zhí)行commit命令 提交掉,現(xiàn)在目錄是這樣的浓冒,

只要沒有commit之前栽渴,如果我想在版本庫中恢復(fù)此文件如何操作呢?

可以使用如下命令 git checkout? — b.txt稳懒,如下所示:

再來看看我們testgit目錄闲擦,添加了3個(gè)文件了。如下所示:

五:遠(yuǎn)程倉庫场梆。

在了解之前佛致,先注冊(cè)github賬號(hào),由于你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的辙谜,所以需要一點(diǎn)設(shè)置:

第一步:創(chuàng)建SSH Key。在用戶主目錄下感昼,看看有沒有.ssh目錄装哆,如果有,再看看這個(gè)目錄下有沒有id_rsa和id_rsa.pub這兩個(gè)文件,如果有的話蜕琴,直接跳過此如下命令萍桌,如果沒有的話,打開命令行凌简,輸入如下命令:

ssh-keygen? -t rsa –C “youremail@example.com”, 由于我本地此前運(yùn)行過一次上炎,所以本地有,如下所示:

id_rsa是私鑰雏搂,不能泄露出去藕施,id_rsa.pub是公鑰,可以放心地告訴任何人凸郑。

第二步:登錄github,打開” settings”中的SSH Keys頁面裳食,然后點(diǎn)擊“Add SSH Key”,填上任意title,在Key文本框里黏貼id_rsa.pub文件的內(nèi)容芙沥。

點(diǎn)擊 Add Key诲祸,你就應(yīng)該可以看到已經(jīng)添加的key。

如何添加遠(yuǎn)程庫而昨?

現(xiàn)在的情景是:我們已經(jīng)在本地創(chuàng)建了一個(gè)Git倉庫后救氯,又想在github創(chuàng)建一個(gè)Git倉庫,并且希望這兩個(gè)倉庫進(jìn)行遠(yuǎn)程同步歌憨,這樣github的倉庫可以作為備份着憨,又可以其他人通過該倉庫來協(xié)作。

首先躺孝,登錄github上享扔,然后在右上角找到“create a new repo”創(chuàng)建一個(gè)新的倉庫。如下:

在Repository name填入testgit植袍,其他保持默認(rèn)設(shè)置惧眠,點(diǎn)擊“Create repository”按鈕,就成功地創(chuàng)建了一個(gè)新的Git倉庫:

目前于个,在GitHub上的這個(gè)testgit倉庫還是空的氛魁,GitHub告訴我們,可以從這個(gè)倉庫克隆出新的倉庫厅篓,也可以把一個(gè)已有的本地倉庫與之關(guān)聯(lián)秀存,然后,把本地倉庫的內(nèi)容推送到GitHub倉庫羽氮。

現(xiàn)在或链,我們根據(jù)GitHub的提示,在本地的testgit倉庫下運(yùn)行命令:

git remote add origin https://github.com/tugenhua0707/testgit.git

所有的如下:

把本地庫的內(nèi)容推送到遠(yuǎn)程档押,使用 git push命令澳盐,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程祈纯。

由于遠(yuǎn)程庫是空的,我們第一次推送master分支時(shí)叼耙,加上了

–u參數(shù)腕窥,Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來筛婉,

在以后的推送或者拉取時(shí)就可以簡化命令簇爆。推送成功后,可以立刻在github頁面中看到遠(yuǎn)程庫的內(nèi)容已經(jīng)和本地一模一樣了爽撒,上面的要輸入github的用

戶名和密碼如下所示:

從現(xiàn)在起入蛆,只要本地作了提交,就可以通過如下命令:

git push origin master

把本地master分支的最新修改推送到github上了匆浙,現(xiàn)在你就擁有了真正的分布式版本庫了安寺。

2. 如何從遠(yuǎn)程庫克隆首尼?

上面我們了解了先有本地庫挑庶,后有遠(yuǎn)程庫時(shí)候,如何關(guān)聯(lián)遠(yuǎn)程庫软能。

現(xiàn)在我們想迎捺,假如遠(yuǎn)程庫有新的內(nèi)容了,我想克隆到本地來 如何克隆呢查排?

首先凳枝,登錄github,創(chuàng)建一個(gè)新的倉庫跋核,名字叫testgit2.如下:

如下岖瑰,我們看到:

現(xiàn)在,遠(yuǎn)程庫已經(jīng)準(zhǔn)備好了砂代,下一步是使用命令git clone克隆一個(gè)本地庫了蹋订。如下所示:

接著在我本地目錄下 生成testgit2目錄了,如下所示:

六:創(chuàng)建與合并分支刻伊。

版本回填退里露戒,你已經(jīng)知道,每次提交捶箱,Git都把它們串成一條時(shí)間線智什,這條時(shí)間線就是一個(gè)分支。截止到目前丁屎,只有一條時(shí)間線荠锭,在Git里,這個(gè)分支叫主

分支晨川,即master分支节沦。HEAD嚴(yán)格來說不是指向提交键思,而是指向master,master才是指向提交的甫贯,所以,HEAD指向的就是當(dāng)前分支看蚜。

首先叫搁,我們來創(chuàng)建dev分支,然后切換到dev分支上供炎。如下操作:

git checkout 命令加上 –b參數(shù)表示創(chuàng)建并切換渴逻,相當(dāng)于如下2條命令

git branch dev

git checkout dev

git branch查看分支,會(huì)列出所有的分支音诫,當(dāng)前分支前面會(huì)添加一個(gè)星號(hào)惨奕。然后我們?cè)赿ev分支上繼續(xù)做demo,比如我們現(xiàn)在在readme.txt再增加一行 7777777777777

首先我們先來查看下readme.txt內(nèi)容竭钝,接著添加內(nèi)容77777777梨撞,如下:

現(xiàn)在dev分支工作已完成,現(xiàn)在我們切換到主分支master上香罐,繼續(xù)查看readme.txt內(nèi)容如下:

現(xiàn)在我們可以把dev分支上的內(nèi)容合并到分支master上了卧波,可以在master分支上,使用如下命令 git merge dev 如下所示:

git merge命令用于合并指定分支到當(dāng)前分支上庇茫,合并后港粱,再查看readme.txt內(nèi)容,可以看到旦签,和dev分支最新提交的是完全一樣的查坪。

注意到上面的Fast-forward信息,Git告訴我們宁炫,這次合并是“快進(jìn)模式”偿曙,也就是直接把master指向dev的當(dāng)前提交,所以合并速度非沉艿恚快遥昧。

合并完成后,我們可以接著刪除dev分支了朵纷,操作如下:

總結(jié)創(chuàng)建與合并分支命令如下:

查看分支:git branch

創(chuàng)建分支:git branch name

切換分支:git checkout name

創(chuàng)建+切換分支:git checkout –b name

合并某分支到當(dāng)前分支:git merge name

刪除分支:git branch –d name

如何解決沖突炭臭?

下面我們還是一步一步來,先新建一個(gè)新分支袍辞,比如名字叫fenzhi1鞋仍,在readme.txt添加一行內(nèi)容8888888,然后提交搅吁,如下所示:

同樣威创,我們現(xiàn)在切換到master分支上來落午,也在最后一行添加內(nèi)容,內(nèi)容為99999999肚豺,如下所示:

現(xiàn)在我們需要在master分支上來合并fenzhi1溃斋,如下操作:

Git用<<<<<<<,=======吸申,>>>&

gt;>>>標(biāo)記出不同分支的內(nèi)容梗劫,其中<<

容,>>>>>fenzhi1 是指fenzhi1上修改的內(nèi)容截碴,我們可以修改下如下后保存:

如果我想查看分支合并的情況的話梳侨,需要使用命令 git log.命令行演示如下:

3.分支管理策略。

通常合并分支時(shí)日丹,git一般使用”Fast forward”模式走哺,在這種模式下,刪除分支后哲虾,會(huì)丟掉分支信息丙躏,現(xiàn)在我們來使用帶參數(shù) –no-ff來禁用”Fast forward”模式。首先我們來做demo演示下:

創(chuàng)建一個(gè)dev分支妒牙。

修改readme.txt內(nèi)容彼哼。

添加到暫存區(qū)。

切換回主分支(master)湘今。

合并dev分支敢朱,使用命令 git merge –no-ff? -m “注釋” dev

查看歷史記錄

截圖如下:

分支策略:首先master主分支應(yīng)該是非常穩(wěn)定的,也就是用來發(fā)布新版本摩瞎,一般情況下不允許在上面干活拴签,干活一般情況下在新建的dev分支上干活,干完后旗们,比如上要發(fā)布蚓哩,或者說dev分支代碼穩(wěn)定后可以合并到主分支master上來。

七:bug分支:

在開發(fā)中上渴,會(huì)經(jīng)常碰到bug問題岸梨,那么有了bug就需要修復(fù),在Git中稠氮,分支是很強(qiáng)大的曹阔,每個(gè)bug都可以通過一個(gè)臨時(shí)分支來修復(fù),修復(fù)完成后隔披,合并分支赃份,然后將臨時(shí)的分支刪除掉。

比如我在開發(fā)中接到一個(gè)404 bug時(shí)候,我們可以創(chuàng)建一個(gè)404分支來修復(fù)它抓韩,但是纠永,當(dāng)前的dev分支上的工作還沒有提交。比如如下:

并不是我不想提交谒拴,而是工作進(jìn)行到一半時(shí)候尝江,我們還無法提交,比如我這個(gè)分支bug要2天完成英上,但是我issue-404

bug需要5個(gè)小時(shí)內(nèi)完成茂装。怎么辦呢?還好善延,Git還提供了一個(gè)stash功能,可以把當(dāng)前工作現(xiàn)場 ”隱藏起來”城侧,等以后恢復(fù)現(xiàn)場后繼續(xù)工作易遣。如下:

所以現(xiàn)在我可以通過創(chuàng)建issue-404分支來修復(fù)bug了。

首先我們要確定在那個(gè)分支上修復(fù)bug嫌佑,比如我現(xiàn)在是在主分支master上來修復(fù)的豆茫,現(xiàn)在我要在master分支上創(chuàng)建一個(gè)臨時(shí)分支,演示如下:

修復(fù)完成后屋摇,切換到master分支上揩魂,并完成合并,最后刪除issue-404分支炮温。演示如下:

現(xiàn)在火脉,我們回到dev分支上干活了。

工作區(qū)是干凈的柒啤,那么我們工作現(xiàn)場去哪里呢倦挂?我們可以使用命令 git stash list來查看下。如下:

工作現(xiàn)場還在担巩,Git把stash內(nèi)容存在某個(gè)地方了方援,但是需要恢復(fù)一下,可以使用如下2個(gè)方法:

git stash apply恢復(fù)涛癌,恢復(fù)后犯戏,stash內(nèi)容并不刪除,你需要使用命令git stash drop來刪除拳话。

另一種方式是使用git stash pop,恢復(fù)的同時(shí)把stash內(nèi)容也刪除了先匪。

演示如下

八:多人協(xié)作。

當(dāng)你從遠(yuǎn)程庫克隆時(shí)候假颇,實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了胚鸯,并且遠(yuǎn)程庫的默認(rèn)名稱是origin。

要查看遠(yuǎn)程庫的信息 使用 git remote

要查看遠(yuǎn)程庫的詳細(xì)信息 使用 git remote –v

如下演示:

一:推送分支:

推送分支就是把該分支上所有本地提交到遠(yuǎn)程庫中笨鸡,推送時(shí)姜钳,要指定本地分支坦冠,這樣,Git就會(huì)把該分支推送到遠(yuǎn)程庫對(duì)應(yīng)的遠(yuǎn)程分支上:

使用命令 git push origin master

比如我現(xiàn)在的github上的readme.txt代碼如下:

本地的readme.txt代碼如下:

現(xiàn)在我想把本地更新的readme.txt代碼推送到遠(yuǎn)程庫中哥桥,使用命令如下:

我們可以看到如上辙浑,推送成功,我們可以繼續(xù)來截圖github上的readme.txt內(nèi)容 如下:

可以看到 推送成功了拟糕,如果我們現(xiàn)在要推送到其他分支判呕,比如dev分支上,我們還是那個(gè)命令 git push origin dev

那么一般情況下送滞,那些分支要推送呢侠草?

master分支是主分支,因此要時(shí)刻與遠(yuǎn)程同步犁嗅。

一些修復(fù)bug分支不需要推送到遠(yuǎn)程去边涕,可以先合并到主分支上,然后把主分支master推送到遠(yuǎn)程去褂微。

二:抓取分支:

多人協(xié)作時(shí)功蜓,大家都會(huì)往master分支上推送各自的修改。現(xiàn)在我們可以模擬另外一個(gè)同事宠蚂,可以在另一臺(tái)電腦上(注意要把SSH key添加到github上)或者同一臺(tái)電腦上另外一個(gè)目錄克隆式撼,新建一個(gè)目錄名字叫testgit2

但是我首先要把dev分支也要推送到遠(yuǎn)程去,如下

接著進(jìn)入testgit2目錄求厕,進(jìn)行克隆遠(yuǎn)程的庫到本地來著隆,如下:

現(xiàn)在目錄下生成有如下所示:

現(xiàn)在我們的小伙伴要在dev分支上做開發(fā),就必須把遠(yuǎn)程的origin的dev分支到本地來甘改,于是可以使用命令創(chuàng)建本地dev分支:git checkout? –b dev origin/dev

現(xiàn)在小伙伴們就可以在dev分支上做開發(fā)了旅东,開發(fā)完成后把dev分支推送到遠(yuǎn)程庫時(shí)。

如下:

小伙伴們已經(jīng)向origin/dev分支上推送了提交十艾,而我在我的目錄文件下也對(duì)同樣的文件同個(gè)地方作了修改抵代,也試圖推送到遠(yuǎn)程庫時(shí),如下:

由上面可知:推送失敗忘嫉,因?yàn)槲业男』锇樽钚绿峤坏暮臀以噲D推送的有沖突荤牍,解決的辦法也很簡單,上面已經(jīng)提示我們庆冕,先用git pull把最新的提交從origin/dev抓下來康吵,然后在本地合并,解決沖突访递,再推送晦嵌。

git pull也失敗了,原因是沒有指定本地dev分支與遠(yuǎn)程origin/dev分支的鏈接,根據(jù)提示惭载,設(shè)置dev和origin/dev的鏈接:如下:

這回git pull成功旱函,但是合并有沖突,需要手動(dòng)解決描滔,解決的方法和分支管理中的 解決沖突完全一樣棒妨。解決后,提交含长,再push:

我們可以先來看看readme.txt內(nèi)容了券腔。

現(xiàn)在手動(dòng)已經(jīng)解決完了,我接在需要再提交拘泞,再push到遠(yuǎn)程庫里面去纷纫。如下所示:

因此:多人協(xié)作工作模式一般是這樣的:

首先,可以試圖用git push origin branch-name推送自己的修改.

如果推送失敗陪腌,則因?yàn)檫h(yuǎn)程分支比你的本地更新早涛酗,需要先用git pull試圖合并。

如果合并有沖突偷厦,則需要解決沖突,并在本地提交燕刻。再用git push origin branch-name推送只泼。

Git基本常用命令如下:

mkdir:???????? XX (創(chuàng)建一個(gè)空目錄 XX指目錄名)

pwd:????????? 顯示當(dāng)前目錄的路徑。

git init????????? 把當(dāng)前的目錄變成可以管理的git倉庫卵洗,生成隱藏.git文件请唱。

git add XX?????? 把xx文件添加到暫存區(qū)去。

git commit –m “XX”? 提交文件 –m 后面的是注釋过蹂。

git status??????? 查看倉庫狀態(tài)

git diff? XX????? 查看XX文件修改了那些內(nèi)容

git log????????? 查看歷史記錄

git reset? –hard HEAD^ 或者 git reset? –hard HEAD~ 回退到上一個(gè)版本

(如果想回退到100個(gè)版本十绑,使用git reset –hard HEAD~100 )

cat XX???????? 查看XX文件內(nèi)容

git reflog?????? 查看歷史記錄的版本號(hào)id

git checkout — XX? 把XX文件在工作區(qū)的修改全部撤銷。

git rm XX????????? 刪除XX文件

git remote add originhttps://github.com/tugenhua0707/testgit關(guān)聯(lián)一個(gè)遠(yuǎn)程庫

git push –u(第一次要用-u 以后不需要) origin master 把當(dāng)前master分支推送到遠(yuǎn)程庫

git clonehttps://github.com/tugenhua0707/testgit從遠(yuǎn)程庫中克隆

git checkout –b dev? 創(chuàng)建dev分支 并切換到dev分支上

git branch? 查看當(dāng)前所有的分支

git checkout master 切換回master分支

git merge dev? ??在當(dāng)前的分支上合并dev分支

git branch –d dev 刪除dev分支

git branch name? 創(chuàng)建分支

git stash 把當(dāng)前的工作隱藏起來 等以后恢復(fù)現(xiàn)場后繼續(xù)工作

git stash list 查看所有被隱藏的文件列表

git stash apply 恢復(fù)被隱藏的文件酷勺,但是內(nèi)容不刪除

git stash drop 刪除文件

git stash pop 恢復(fù)文件的同時(shí) 也刪除文件

git remote 查看遠(yuǎn)程庫的信息

git remote –v 查看遠(yuǎn)程庫的詳細(xì)信息

git push origin master? Git會(huì)把master分支推送到遠(yuǎn)程庫對(duì)應(yīng)的遠(yuǎn)程分支上

二本橙、使用 git 命令 提交代碼的順序:

1.git add .? ? ? ? ? ? ? ? ? //把代碼添加到暫存區(qū)

3.git commit -m "提交代碼到本地庫.git庫"??

4.git pull? (出現(xiàn)代碼沖突,解決代碼沖突后,再次git add .? --> git commit -m "添加修改代碼的內(nèi)容"? -->git pull -->git push? 遠(yuǎn)程分支名 )

5.git push ? ?? 提交到遠(yuǎn)程

6.git checkout? 要檢出分支名稱 ? ? //從遠(yuǎn)程到檢出到代碼到本地

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脆诉,隨后出現(xiàn)的幾起案子甚亭,更是在濱河造成了極大的恐慌,老刑警劉巖击胜,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亏狰,死亡現(xiàn)場離奇詭異,居然都是意外死亡偶摔,警方通過查閱死者的電腦和手機(jī)暇唾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人策州,你說我怎么就攤上這事瘸味。” “怎么了抽活?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵硫戈,是天一觀的道長。 經(jīng)常有香客問我下硕,道長丁逝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任梭姓,我火速辦了婚禮霜幼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘誉尖。我一直安慰自己罪既,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布铡恕。 她就那樣靜靜地躺著琢感,像睡著了一般。 火紅的嫁衣襯著肌膚如雪探熔。 梳的紋絲不亂的頭發(fā)上驹针,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音诀艰,去河邊找鬼柬甥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛其垄,可吹牛的內(nèi)容都是我干的苛蒲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼绿满,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼臂外!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喇颁,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤寄月,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后无牵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漾肮,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年茎毁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了克懊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忱辅。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谭溉,靈堂內(nèi)的尸體忽然破棺而出墙懂,到底是詐尸還是另有隱情,我是刑警寧澤扮念,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布损搬,位于F島的核電站,受9級(jí)特大地震影響柜与,放射性物質(zhì)發(fā)生泄漏巧勤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一弄匕、第九天 我趴在偏房一處隱蔽的房頂上張望颅悉。 院中可真熱鬧,春花似錦迁匠、人聲如沸剩瓶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽延曙。三九已至,卻和暖如春亡哄,著一層夾襖步出監(jiān)牢的瞬間搂鲫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工磺平, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拐辽。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓拣挪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親俱诸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子菠劝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,649評(píng)論 4 54
  • 轉(zhuǎn)載自:http://www.open-open.com/lib/view/open1414396787325.h...
    Bbooo閱讀 407評(píng)論 0 3
  • 一:Git是什么睁搭? Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)赶诊。 二:SVN與Git的最主要的區(qū)別? SVN是集...
    傲慢二鍋頭閱讀 411評(píng)論 0 0
  • 智德愛閱讀 199評(píng)論 0 0
  • 借由某位爸爸的探親园骆,大大小小20幾號(hào)人齊聚一堂舔痪。小孩加上肚子里的11人,男孩5人锌唾,最大不到11歲锄码,最小不到...
    馨閱閱讀 406評(píng)論 0 0