Git學(xué)習(xí)記錄
Git學(xué)習(xí)記錄 一Git是什么 二SVN和Git的區(qū)別 SVN Git 三Git和GitHub的關(guān)系 四安裝Git 五基本操作 創(chuàng)建版本庫 把文件添加到版本庫 版本回退 工作區(qū)與暫存區(qū)的區(qū)別 撤銷修改 刪除文件 六遠(yuǎn)程倉庫 七創(chuàng)建與合并分支 八bug分支 九多人協(xié)作 十常用指令 參考資料
一、Git是什么Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。
二、SVN和Git的區(qū)別 SVNSVN是集中式控制系統(tǒng),版本庫存放在中央服務(wù)器。編輯時(shí),在本地機(jī)器上進(jìn)行,每次工作前,需要從服務(wù)器上獲取最新版,進(jìn)行工作。故而,需在網(wǎng)絡(luò)環(huán)境下進(jìn)行工作。
GitGit是分布式控制系統(tǒng),不需要中央服務(wù)器,每個(gè)人的電腦都是一個(gè)完整的版本庫。故而,每個(gè)人的機(jī)器上都有完整的版本庫,工作時(shí),也就可以脫離網(wǎng)絡(luò)環(huán)境。多人協(xié)作時(shí),只需將修改推送給對方,即可關(guān)注對方的改動(dòng)。
三、Git和GitHub的關(guān)系Git是免費(fèi)開源的分布式版本控制系統(tǒng),而GitHub是用Git做版本控制的代碼托管平臺(tái)。
下載msysGit.exe,并安裝。
安裝成功后,可在開始菜單中,找到Git–>GitBash
因?yàn)镚it是分布式的版本控制系統(tǒng),故而需要填寫用戶名和郵箱作為標(biāo)識(shí)。
git config –global 參數(shù),有了這個(gè)參數(shù),表示當(dāng)前機(jī)器上所有的Git倉庫都會(huì)使用這個(gè)配置,當(dāng)然也可以對某個(gè)倉庫指定的不同的用戶名和郵箱。
什么是版本庫?
版本庫又名倉庫,英文名repository,可以簡單的理解為一個(gè)目錄,這個(gè)目錄里面的所有文件都可以被Git管理起來,每個(gè)文件的修改,刪除,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史,或者在將來某個(gè)時(shí)刻還可以將文件”還原”。
創(chuàng)建一個(gè)版本庫也非常簡單,比如在D盤GitRepository目錄下創(chuàng)建一個(gè)test的版本庫。(很多基本指令類似Linux操作)
通過git init指令可以把該目錄編程git管理的倉庫,如下圖所示:
當(dāng)前test目錄下會(huì)多了一個(gè).git的目錄,這個(gè)目錄是Git來跟蹤管理版本的,不要手動(dòng)亂改這個(gè)目錄里面的文件,否則,會(huì)把git倉庫給破壞了。結(jié)果如下:
(實(shí)際操作中發(fā)現(xiàn).git文件夾并沒有出現(xiàn),可能原因有三,1.文件夾被隱藏了,2.git安裝錯(cuò)誤,3.圖標(biāo)優(yōu)先級(jí)關(guān)系,需改注冊表,通常是第一個(gè)原因,后兩個(gè)可搜索解決)
首先要明確下,所有的版本控制系統(tǒng),只能跟蹤文本文件的改動(dòng),比如txt文件,網(wǎng)頁,所有程序的代碼等,Git也不列外,版本控制系統(tǒng)可以告訴你每次的改動(dòng),但是圖片,視頻這些二進(jìn)制文件,雖能也能由版本控制系統(tǒng)管理,但沒法跟蹤文件的變化,只能把二進(jìn)制文件每次改動(dòng)串起來,也就是知道圖片從1kb變成2kb,但是到底改了啥,版本控制也不知道。
1.首先,在../test目錄下新建一個(gè)readme.txt,內(nèi)容為“123456”(不會(huì)vim,直接創(chuàng)建也可以);
2.使用git add readme.txt指令,將該文件添加到暫存區(qū);
3.用git commit將文件提交到倉庫;
4.git status查看是否有文件未提交,發(fā)現(xiàn)已經(jīng)全部提交;
5.修改readme.txt,再次使用git status查看是否有文件未提交;
發(fā)現(xiàn),readme.txt已經(jīng)被修改,但是未提交修改;
6.使用git diff readme.txt可查看修改內(nèi)容;
7.明確了修改后,就可以將readme.txt提交到倉庫,再提交文件,同2,3步;
1.再次修改readme.txt為“12345678”,并提交,查看歷史紀(jì)錄,使用git log命令;
commit后跟的是版本號(hào)。
2.版本回退有兩種方式,
2.1 git reset –hard HEAD^(回退幾次,就寫幾個(gè)^);
2.2 git reset –hard HEAD~n,(n是回退到此之前的第幾個(gè)版本);
3.通過git reflog,可以獲取到每次的版本號(hào)
4.可以git reset –hard 版本號(hào)來恢復(fù)
工作區(qū)和暫存區(qū)
git工作區(qū)、暫存區(qū)、版本庫之間的關(guān)系
工作區(qū):就是電腦上看到的目錄,比如目錄下test里的文件(.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)前分支上。
Ex:
1.修改readme.txt內(nèi)容為“123456789”,新建文件test.txt的內(nèi)容為“1111”;
2.使用git add添加到暫存區(qū),再用git commit -m一次性全部提交
1.直接手動(dòng)修改,再用add,commit指令進(jìn)行修改;
2.git reset –hard HEAD^直接回退到之前的版本;
3.git checkout – filename
把文件在工作區(qū)做的修改全部撤銷,這里有2種情況,如下:
文件自動(dòng)修改后,還沒有放到暫存區(qū),使用 撤銷修改就回到和版本庫一模一樣的狀態(tài)。
另外一種是文件已經(jīng)放入暫存區(qū)了,接著又作了修改,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
可在工作區(qū)中直接刪除文件,如rm readme.txt,如果想從版本庫中刪掉的話,可執(zhí)行commit命令。
六、遠(yuǎn)程倉庫 七、創(chuàng)建與合并分支 八、bug分支 九、多人協(xié)作 十、常用指令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 origin https://github.com/tugenhua0707/testgit 關(guān)聯(lián)一個(gè)遠(yuǎn)程庫
git push –u(第一次要用-u 以后不需要) origin master 把當(dāng)前master分支推送到遠(yuǎn)程庫
git clone https://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)程庫對應(yīng)的遠(yuǎn)程分支上
Git使用教程、
git工作區(qū)、暫存區(qū)、版本庫之間的關(guān)系
工作區(qū)和暫存區(qū)
Git 跟 GitHub 是什么關(guān)系? - 知乎