Git 學(xué)習(xí)總結(jié)

一 git簡介

1. 概念

git 是一種分布式版本管理工具押蚤。

git 支持的平臺(tái):

支持的平臺(tái)

2. git與svn的區(qū)別


(1)git是分布式的,而SVN是集中式的筒扒。Git是沒有中心服務(wù)器的可柿,每個(gè)人機(jī)器上都是一個(gè)完整的庫鸠踪,我們平時(shí)開發(fā)代碼時(shí)的中央服務(wù)器其實(shí)和我們自己機(jī)器上的庫內(nèi)容是完全一樣的。

svn與分布式的區(qū)別

(2)git把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ)复斥,而svn是按文件:因?yàn)間it目錄是處于個(gè)人git目錄是處于個(gè)人機(jī)器上的一個(gè)克隆版的版本庫营密,它擁有中心版本庫上所有的東西,例如標(biāo)簽目锭,分支评汰,版本記錄等。?

(3)GIT分支和SVN的分支不同:svn會(huì)發(fā)生分支遺漏的情況痢虹,而git可以同一個(gè)工作目錄下快速的在幾個(gè)分支間切換被去,很容易發(fā)現(xiàn)未被合并的分支,簡單而快捷的合并這些文件奖唯。

(4)GIT沒有一個(gè)全局的版本號(hào)惨缆,而SVN有

(5)GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲(chǔ)使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性丰捷,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時(shí)降低對(duì)版本庫的破壞坯墨。

參考鏈接:https://jingyan.baidu.com/article/676629976401a154d51b8430.html

svn工作流程

二 git的下載和安裝

1. 下載地址

https://git-scm.com/downloads(注意下載的版本的位數(shù)與自己電腦一樣)

舉例:win7 64bit,下載的git版本

2. 安裝

雙擊.exe安裝程序,按默認(rèn)選項(xiàng)完成安裝病往。

安裝完成后捣染,在開始菜單里找到“Git”->“Git Bash”,蹦出一個(gè)類似命令行窗口的東西停巷,就說明Git安裝成功耍攘!此時(shí)右擊鼠標(biāo),發(fā)現(xiàn)多了幾個(gè)選項(xiàng)畔勤,如圖所示蕾各。

Git Bash 打開命令窗

注意運(yùn)行g(shù)it bash的方式,

(1)直接在桌面右擊鼠標(biāo)選擇git bash硼被,使用cd命令切換至倉庫所在位置。(也可更改git bash的默認(rèn)路徑)

cd命令切換當(dāng)前位置

(2)先在本地磁盤上建好倉庫渗磅,在倉庫所在的位置右擊鼠標(biāo)嚷硫,執(zhí)行操作即可。

三 git的基本使用

1.創(chuàng)建版本庫

(1)初始化一個(gè)倉庫:git init

初始化倉庫

完成這個(gè)步驟后始鱼,會(huì)在本地倉庫中生成一個(gè).git文件夾仔掸。(注意:若未看到.git,可使用ls -a命令查看隱藏文件医清,或設(shè)置windows顯示隱藏文件及文件夾)

(2)添加文件到git倉庫起暮,分兩步:先git add,后git commit会烙。

添加文件到倉庫

(2-1)可能遇到的問題:在commit文件時(shí)需要驗(yàn)證個(gè)人信息负懦,出現(xiàn)如下圖的提示消息:please tell me who you are. 這時(shí)需要我們按照提示運(yùn)行命令筒捺,完成用戶名和郵箱的配置,之后就可以正常commit文件了纸厉。

配置用戶名和郵箱

(2-2)注意事項(xiàng):

? a.使用git add 命令需要指明具體add哪個(gè)文件系吭,git add .代表將倉庫中所有待添加的文件都添加進(jìn)來。

git add

? b.無論新增還是修改文件颗品,想要將提交文件到本地倉庫都需要add和commit兩個(gè)步驟肯尺;

修改文件后,直接使用commit,而不使用add出現(xiàn)的提示消失

?? c.? commit-m中的m(message)是本次提交的說明躯枢;


2.文件狀態(tài)變化

文件狀態(tài)變化總體過程

下面就用具體的示例來模擬這些狀態(tài)的變化则吟。

1、首先在本地倉庫所在文件夾新建一個(gè)文件(如:git_file.txt)锄蹂。

在倉庫文件夾中建一個(gè)文件

2氓仲、使用git status查看倉庫當(dāng)前狀態(tài)

表示倉庫當(dāng)前有待添加的文件

3、按照提示信息添加文件git_file.txt败匹,并查詢狀態(tài)

文件將被commit寨昙,并可以使用提示命令將已提交的文件恢復(fù)至添加前的狀態(tài)
用“+”表示文件處于staged狀態(tài),等待被commit

4掀亩、commit文件舔哪,并查詢狀態(tài)

nothing? to commit

對(duì)應(yīng)為文件標(biāo)識(shí)為:

用'對(duì)勾'表示文件狀態(tài)為commited,已經(jīng)被提交

4槽棍、修改文件git_file.txt捉蚤,并查看文件狀態(tài)。

修改文件git_file.txt
“嘆號(hào)”表示文件有改動(dòng)
文件git_file.txt目前的狀態(tài)為modified

5炼七、使用git diff 查看具體的修改內(nèi)容缆巧。

“+”代表增加的內(nèi)容

6、再次修改文件并查詢具體修改內(nèi)容豌拙。

再次修改文件(刪除原有內(nèi)容陕悬,并新增兩行)
git diff

7查看日志git log(注意:信息量大時(shí),可以使用git log --pretty=oneline 來簡化輸出按傅。)

git log 命令顯示從最近到最遠(yuǎn)的提交日志

說明:

(1)git log 清晰地展示了提交的版本號(hào)(commit id)捉超、描述信息(description)、提交者(Author)及提交時(shí)間(Date,精確到秒s)唯绍。

(2)HEAD -> master表名當(dāng)前所處的分支為master

(3)你看到的commit后面跟著個(gè)一大串是commit id(版本號(hào))拼岳,它是使用SHA-1計(jì)算出來的用十六進(jìn)制表示的數(shù)。

3.git版本回退與‘前進(jìn)’

可以回退到上一個(gè)版本的前置條件况芒,就是你還沒有把自己的本地版本庫推送到遠(yuǎn)程Oе健!!

(1)版本回退

結(jié)合上小節(jié)git log中的圖對(duì)比著看耐版。

版本回退

在Git中祠够,用HEAD表示當(dāng)前版本,也就是最新的提交64c44c4(它是截取了commit id的前七位)椭更,上一個(gè)版本就是HEAD^哪审,上上一個(gè)版本就是HEAD^^。(感覺版本回退就是指針位置的變動(dòng))

說明:目前我們的git_file.txt共有兩個(gè)版本虑瀑,第一個(gè)為空文件湿滓。當(dāng)我們使用reset命令回退至第一個(gè)版本時(shí),查看倉庫中文件git_file.txt中的內(nèi)容也變?yōu)榈谝话娴牧松喙贰4藭r(shí)我們繼續(xù)回退版本叽奥,就會(huì)發(fā)現(xiàn)文件git_file在倉庫中消失了。(雖然文件git_file只有兩個(gè)版本痛侍,但是這個(gè)關(guān)注的是倉庫的版本哦3ァ)

(2)版本‘前進(jìn)’

git relog(relog,即reference logs)
‘前進(jìn)’到指定版本
此時(shí)文件的狀態(tài)

注意查看此時(shí)的倉庫狀態(tài)為 文件git_file為unstaged狀態(tài),而不是staged主届。(不理解赵哲??君丁?是不是這時(shí)提交的話枫夺,就不用先git add了,直接git commit 就是ok 了绘闷?)

查看倉庫狀態(tài)
commit checkout下來的版本

4橡庞、撤銷修改與刪除文件

(1)撤銷修改的命令 git checkout? --? <filename>,適用于以下兩種情況:

a.自修改后還沒有被放到暫存區(qū),現(xiàn)在印蔗,撤銷修改就回到和版本庫一模一樣的狀態(tài)扒最;

b.已經(jīng)添加到暫存區(qū)后,而且又作了修改华嘹,現(xiàn)在吧趣,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)
說明:使用時(shí)注意:--前后都需要加空格耙厚。

(2)刪除文件

刪除方式:在文件管理器中直接刪了强挫,或者使用git rm 命令(rm即emove)

git checkout其實(shí)是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除颜曾,都可以“一鍵還原”纠拔。

版本回退秉剑、撤銷修改 都要注意應(yīng)用場景小結(jié):

場景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容泛豪,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- file。:

場景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容诡曙,還添加到了暫存區(qū)時(shí)臀叙,想丟棄修改,分兩步价卤,第一步用命令git reset HEAD file劝萤,就回到了場景1,第二步按場景1操作慎璧。

場景3:已經(jīng)提交了不合適的修改到版本庫時(shí)床嫌,想要撤銷本次提交,參考版本回退一節(jié)胸私,不過前提是沒有推送到遠(yuǎn)程庫厌处。

四. git工作流程


git工作圖

Workspace :即work directory /working tree,工作目錄

Index/Stage:暫存區(qū)(Staging area)

Repository:本地倉庫

Remote:遠(yuǎn)程倉庫

五.使用git將項(xiàng)目上傳到github

1.進(jìn)入Github首頁岁疼,點(diǎn)擊New repository新建一個(gè)項(xiàng)目

New repository

2.填寫相應(yīng)信息后點(diǎn)擊create即可

Create repository

3.點(diǎn)擊Clone or dowload會(huì)出現(xiàn)一個(gè)地址阔涉,copy這個(gè)地址備用

4.接下來就到本地操作了,首先右鍵你的項(xiàng)目捷绒,選擇Git Bash Here進(jìn)入如下界面瑰排,在本地創(chuàng)建ssh key。(錯(cuò)誤示例)

$ ssh-keygen -t rsa -C"your_email@youremail.com

錯(cuò)誤示例:直接點(diǎn)回車暖侨,說明會(huì)在默認(rèn)文件id_rsa上生成ssh key椭住。但并沒有出現(xiàn)預(yù)期的效果。
錯(cuò)誤示例-續(xù):這次在保存文件名改為id_rsa

新生成的公鑰和密鑰文件如圖所示:

生成公鑰和私鑰
將id_rsa.pub內(nèi)容復(fù)制到此處它碎,用于生成新的ssh key
使用$ ssh -T git@github.com驗(yàn)證是否能夠成功連接github函荣。(按照這個(gè)方法做了,但就是不能成功連接github扳肛,不知道是什么原因傻挂。)

4.接下來就到本地操作了,首先右鍵你的項(xiàng)目挖息,選擇Git Bash Here金拒,進(jìn)入如下界面。(正確示例)

正確示例套腹,為什么會(huì)有這個(gè)默認(rèn)保存位置绪抛?
密鑰和公鑰
驗(yàn)證結(jié)果表明已成功連接github

5.接下來就要把github上面的倉庫克隆到本地 .完成后你的本地項(xiàng)目文件夾下面就會(huì)多出個(gè)名為‘你github上面的項(xiàng)目名’的文件夾,如圖我多出了個(gè)git_work_2文件夾电禀,我們把本地項(xiàng)目文件夾下的所有文件(除了新多出的那個(gè)文件夾不用)幢码,其余都復(fù)制到那個(gè)新多出的文件夾下,接著繼續(xù)輸入命令 cd git_work_2,進(jìn)入該文件夾

將需要上傳的文件復(fù)制到repository下尖飞,然后add,commit

8.接下來依次輸入以下代碼即可完成其他剩余操作:

commit

9.上傳成功后症副,如下圖所示店雅。

git push命令會(huì)將本地倉庫推送到遠(yuǎn)程服務(wù)器
顯示提交進(jìn)度

方法

git checkout其實(shí)是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除贞铣,都可以“一鍵還原”闹啦。

六、分支管理

1辕坝、分支簡介

1-1 分支分類及常用分支

git branch

主分支master和開發(fā)分支develop

1-2 git是保存數(shù)據(jù)的方式

有些傳統(tǒng)的版本管理軟件窍奋,分支操作實(shí)際上會(huì)生成一份現(xiàn)有代碼的物理拷貝,而Git只生成一個(gè)指向當(dāng)前版本(又稱"快照")的指針酱畅,因此非沉瞻溃快捷易用。

在進(jìn)行提交操作時(shí)纺酸,Git 會(huì)保存一個(gè)提交對(duì)象(commit object)挚歧。該提交對(duì)象會(huì)包含一個(gè)指向暫存內(nèi)容快照的指針。還包含了作者的姓名和郵箱吁峻、提交時(shí)輸入的信息以及指向它的父對(duì)象的指針滑负。首次提交產(chǎn)生的提交對(duì)象沒有父對(duì)象,普通提交操作產(chǎn)生的提交對(duì)象有一個(gè)父對(duì)象用含,而由多個(gè)分支合并產(chǎn)生的提交對(duì)象有多個(gè)父對(duì)象矮慕。

2、案例說明

2-1.案例準(zhǔn)備:新建一個(gè)版本庫啄骇,并創(chuàng)建一個(gè)開發(fā)分支痴鳄。

參考網(wǎng)址:http://blog.codingplayboy.com/2017/04/06/git_branch/

上圖可見,第一行顯示了當(dāng)前項(xiàng)目所有分支缸夹,HEAD -> develop-1表明當(dāng)前所處分支為develop-1痪寻。


推薦參考網(wǎng)址:

git 分支管理 http://blog.codingplayboy.com/2017/04/06/git_branch/

官方文檔 https://git-scm.com/docs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市虽惭,隨后出現(xiàn)的幾起案子橡类,更是在濱河造成了極大的恐慌,老刑警劉巖芽唇,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顾画,死亡現(xiàn)場離奇詭異,居然都是意外死亡匆笤,警方通過查閱死者的電腦和手機(jī)研侣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炮捧,“玉大人庶诡,你說我怎么就攤上這事∨乜危” “怎么了末誓?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵璧函,是天一觀的道長。 經(jīng)常有香客問我基显,道長,這世上最難降的妖魔是什么善炫? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任撩幽,我火速辦了婚禮,結(jié)果婚禮上箩艺,老公的妹妹穿的比我還像新娘窜醉。我一直安慰自己,他們只是感情好艺谆,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布榨惰。 她就那樣靜靜地躺著,像睡著了一般静汤。 火紅的嫁衣襯著肌膚如雪琅催。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天虫给,我揣著相機(jī)與錄音藤抡,去河邊找鬼。 笑死抹估,一個(gè)胖子當(dāng)著我的面吹牛缠黍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播药蜻,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼瓷式,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了语泽?” 一聲冷哼從身側(cè)響起贸典,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎踱卵,沒想到半個(gè)月后瓤漏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颊埃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年蔬充,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片班利。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饥漫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罗标,到底是詐尸還是另有隱情庸队,我是刑警寧澤积蜻,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站彻消,受9級(jí)特大地震影響竿拆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宾尚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一丙笋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煌贴,春花似錦御板、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淹朋,卻和暖如春笙各,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背础芍。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工酪惭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人者甲。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓春感,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虏缸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鲫懒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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

  • Git是目前最流行的版本管理系統(tǒng),也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,717評(píng)論 1 17
  • Git for windows 本文只是自己的一些學(xué)習(xí)總結(jié)刽辙,方便自己查看窥岩,如果對(duì)您閱讀不適,抱歉T诅汀K桃怼! 常用命令(...
    Lxs_597閱讀 341評(píng)論 0 0
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,665評(píng)論 9 163
  • 那個(gè)靠窗子的位置 有陽光慨灭,但有些冷 我坐在 曾經(jīng)一起學(xué)習(xí)過得書桌前 歪著頭朦乏,握著筆,沒有紙 看你側(cè)臉學(xué)習(xí) 拿起不在...
    四海WX閱讀 141評(píng)論 0 0
  • 標(biāo)榜沉默是金的時(shí)代過去了,信息量龐大的現(xiàn)代社會(huì)筹陵,溝通過程中刽锤,很少有誰會(huì)細(xì)細(xì)傾聽你所說的镊尺,更不會(huì)花過多心思去想你心里...
    洛神的花園閱讀 2,366評(píng)論 9 12