前言
git新手學(xué)起來融涣,還是比較困難的童番。我大概花了三天時(shí)間才把老師講的內(nèi)容,順利的練了一遍威鹿。我是個(gè)比較較真的程序員剃斧,有任何疑問或者新奇的想法都會(huì)去做,所以在練習(xí)git過程中忽你,出現(xiàn)了很多容易犯的錯(cuò)誤幼东,希望通過這篇文章,來鞏固git的使用和談?wù)勛约旱男牡谩?/p>
git簡(jiǎn)介
想用好git科雳,先要知道git是什么根蟹。它是一個(gè)分布式版本控制軟件,最初由林納斯·托瓦茲(Linus Torvalds)創(chuàng)作糟秘,于2005年以GPL發(fā)布简逮。最初目的是為更好地管理Linux內(nèi)核開發(fā)而設(shè)計(jì)。
git是用于Linux內(nèi)核開發(fā)的版本控制工具尿赚。與CVS散庶、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫(kù)的作法凌净,不需要服務(wù)器端軟件悲龟,就可以運(yùn)作版本控制,使得源代碼的發(fā)布和交流極其方便冰寻。git的速度很快须教,這對(duì)于諸如Linux內(nèi)核這樣的大項(xiàng)目來說自然很重要。git最為出色的是它的合并追蹤(merge tracing)能力斩芭。
git和其他版本控制系統(tǒng)(如CVS)有不少的差別轻腺,git本身關(guān)心文件的整體性是否有改變羹奉,但多數(shù)的CVS或Subversion系統(tǒng)則在乎文件內(nèi)容的差異。因此git更像一個(gè)文件系統(tǒng)约计,直接在本機(jī)上獲取數(shù)據(jù),不必連接到主機(jī)端獲取數(shù)據(jù)迁筛。
github網(wǎng)站
GitHub是一個(gè)通過Git進(jìn)行版本控制的軟件源代碼托管服務(wù)煤蚌,由GitHub公司(曾稱Logical Awesome)的開發(fā)者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails編寫而成细卧。
GitHub里面的項(xiàng)目可以通過標(biāo)準(zhǔn)的Git命令進(jìn)行訪問和操作尉桩。同時(shí),所有的Git命令都可以用到GitHub項(xiàng)目上面贪庙。GitHub開發(fā)了針對(duì)Windows和OS X操作系統(tǒng)的桌面客戶端蜘犁。此外,也可以使用第三方插件來實(shí)現(xiàn)Git功能止邮。
網(wǎng)站提供了一系列社交網(wǎng)絡(luò)具有的功能这橙,例如贊、關(guān)注导披、評(píng)論屈扎。用戶可以通過復(fù)刻他人項(xiàng)目的形式參與開發(fā),并可通過 Collaboration graph(協(xié)作示意圖)來查看有多少開發(fā)者參與了開發(fā)并追蹤最新的復(fù)刻版本撩匕。此外網(wǎng)站還有Wiki(通過一個(gè)名為 gollum 的軟件實(shí)現(xiàn))等功能鹰晨。
GitHub同時(shí)允許注冊(cè)用戶和非注冊(cè)用戶在網(wǎng)頁(yè)中瀏覽項(xiàng)目,也可以以ZIP格式打包下載止毕。但是用戶必須注冊(cè)一個(gè)賬號(hào)然后才能進(jìn)行討論模蜡、創(chuàng)建并編輯項(xiàng)目、參與他人的項(xiàng)目和代碼審查扁凛。
我們要使用git忍疾,要先在github上注冊(cè)才行。
注冊(cè)完成之后令漂,就是git與github之間的公私鑰的配置膝昆。這一步對(duì)于新手來說也是非常復(fù)雜。我前前后后試了很多次終于配上了叠必。首先打開git bash(對(duì)于windows版本的同學(xué)荚孵,mac直接打開命令提示符),利用這段命令生成公私鑰
共苛?的代碼判没,回復(fù)yes蜓萄,生成Know_hosts文件。
之后一直回車出現(xiàn)這張圖為止
之后新建庫(kù)(New repository)绸硕。
一般我們是創(chuàng)建Public類型庫(kù),這是免費(fèi)的魂毁。當(dāng)然還有Private玻佩,這需要收費(fèi)。如下圖所示
當(dāng)我們要把本地的代碼push到github上,需要三個(gè)命令铆农,1牺氨、git add .表示增加所有變更的文件到暫緩區(qū);2墩剖、git commit -am "文件屬性"提交到本地庫(kù)猴凹;3、git push推送到github遠(yuǎn)程庫(kù)岭皂,第一次先git push origin master郊霎。之后直接就git push就好了。git status是查看文檔所處狀態(tài)爷绘。
在github中书劝,對(duì)于html類型文件我們可以直接設(shè)置為預(yù)覽模式,直接通過URL瀏覽文件土至。
git簡(jiǎn)單使用
前面提到购对,把文件推送到github,有三個(gè)步驟陶因,對(duì)應(yīng)的是把文件推在不同的地方骡苞,一步一步的推送到github。每個(gè)步驟也可以通過git status命令查看步驟狀態(tài)和取消步驟。
下面介紹一些git最常使用命令
創(chuàng)建文件 touch 文件名.格式
創(chuàng)建文件夾 mkdir 文件夾名
重命名文件名 mv 更改前名 更改后名
在文件里寫入一個(gè)字符串 echo "hello" > a.md
把遠(yuǎn)程倉(cāng)庫(kù)的變動(dòng)更新合并到本地倉(cāng)庫(kù) git pull
修改文件 vim a.md vim是git中一個(gè)文件修改編輯器解幽,在我的簡(jiǎn)書中有一些介紹vim使用此時(shí)會(huì)進(jìn)入 vim 界面贴见,按下i進(jìn)入編輯狀態(tài),進(jìn)行編輯躲株,編輯完成后按下 esc 進(jìn)入命令態(tài)片部, 輸入 :wq 保存退出 vim
git add .
git commit -a 這里需要注意,如果提交消息包含大量字符串霜定,提交參數(shù)不用加 m
git push origin master
rm -rf a.md 直接刪除a.md文件吞琐,不需要詢問直接強(qiáng)制刪除。當(dāng)然還有rm -r刪除文件夾命令;rm刪除文件命令然爆。
如果之前已經(jīng)git push origin master 過,后面可以直接簡(jiǎn)化成 git push
git push
git復(fù)雜使用
我們通過以下幾個(gè)例子來學(xué)習(xí)git的復(fù)雜使用黍图。
1曾雕、本地創(chuàng)建一個(gè)git項(xiàng)目推送到遠(yuǎn)程空倉(cāng)庫(kù)
首先要在github上創(chuàng)建一個(gè)倉(cāng)庫(kù)如圖
之后在git bash上操作
跟著以上詳細(xì)步驟,就能把本地newrepositor推送到遠(yuǎn)程庫(kù)了助被。
2剖张、分支操作
分支操作是git最具代表性的功能,開發(fā)同一個(gè)項(xiàng)目的程序員可以通過分支來上傳合并揩环。下面通過命令行演示一下創(chuàng)建分支和合并到主干上搔弄。
3、沖突
當(dāng)大家一同完成一個(gè)項(xiàng)目時(shí)丰滑,各自把自己代碼push到github上顾犹,由于自己本地的庫(kù)不是最新的只要遠(yuǎn)程庫(kù)被別人更新,那么你再上傳就會(huì)產(chǎn)生沖突褒墨。下面演示一個(gè)典型的