4000字,教大家學(xué)會(huì)Git使用。
一、Git基礎(chǔ)
1、Git介紹
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。
版本控制系統(tǒng):
設(shè)計(jì)師在設(shè)計(jì)的時(shí)候做了很多版本
經(jīng)過(guò)了數(shù)天去問(wèn)設(shè)計(jì)師每個(gè)版本都改了些啥,設(shè)計(jì)師此時(shí)可能就說(shuō)不上來(lái)了。這個(gè)時(shí)候如果能有一個(gè)軟件能記錄每次的文件改動(dòng),并且還能協(xié)調(diào)多用戶(hù)編輯,那豈不是美滋滋?這個(gè)軟件應(yīng)用起來(lái)應(yīng)該像這個(gè)樣子:
版本 | 文檔名 | 操作用戶(hù) | 日志 | 修改時(shí)間 |
1 | shejigao.txt | zhangsan | 修改標(biāo)題 | 2019-10-01 10:10:31 |
2 | shejigao.txt | lisi | 刪除備注信息 | 2019-10-01 10:11:49 |
3 | shejigao.txt | lisi | 增加了許可協(xié)議 | 2019-10-03 11:31:00 |
4 | shejigao.txt | zhangsan | 修改版權(quán)信息 | 2019-10-05 09:32:11 |
2、Git與Github
2.1、兩者區(qū)別
Git是一個(gè)分布式版本控制系統(tǒng),簡(jiǎn)單的說(shuō)其就是一個(gè)軟件,用于記錄一個(gè)或若干文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的軟件。
Github(https://www.github.com)是一個(gè)為用戶(hù)提供Git服務(wù)的網(wǎng)站,簡(jiǎn)單說(shuō)就是一個(gè)可以放代碼的地方(不過(guò)可以放的當(dāng)然不僅是代碼)。github除了提供管理Git的web界面外,還提供了訂閱、關(guān)注、討論組、在線(xiàn)編輯器等豐富的功能。Github被稱(chēng)之為全球最大的基友網(wǎng)站。
2.2、Github注冊(cè)
打開(kāi)Github官網(wǎng):https://github.com/,點(diǎn)擊右上角的“Sign up”按鈕。
選擇免費(fèi)的賬戶(hù)類(lèi)型:
提示我們需要驗(yàn)證郵箱:
打開(kāi)郵箱中收到的郵件,點(diǎn)擊按鈕進(jìn)行驗(yàn)證:
至此,Github帳號(hào)注冊(cè)完畢,我們將在后面會(huì)使用到本次注冊(cè)的帳號(hào)。
3、Git安裝
①下載得到安裝包,并運(yùn)行
②選擇軟件的安裝位置
③選擇需安裝的組件(默認(rèn)即可,直接下一步)
④選擇使用的編輯器(默認(rèn)即可,直接下一步)
⑤環(huán)境變量調(diào)節(jié)
⑥使用OpenSSH,直接下一步即可
⑦使用OpenSSL庫(kù)
⑧配置命令行會(huì)話(huà)(默認(rèn)即可)
⑨配置終端(默認(rèn)即可)
⑩配置額外的選項(xiàng)(默認(rèn)即可)
安裝完成
在桌面空白處右鍵鼠標(biāo),若出現(xiàn)“Git GUI Here”、“Git Bash Here”則安裝成功:
二、Git的使用
1、本地倉(cāng)庫(kù)
1.1、工作流程
Git本地操作的三個(gè)區(qū)域:
工作流程:
1.2、本地倉(cāng)庫(kù)操作
什么是倉(cāng)庫(kù)呢?倉(cāng)庫(kù)又名版本庫(kù),英文名repository,我們可以簡(jiǎn)單理解成是一個(gè)目錄,用于存放代碼的,這個(gè)目錄里面的所有文件都可以被Git管理起來(lái),每個(gè)文件的修改、刪除等操作Git都能跟蹤到。
①在安裝好后首次使用需要先進(jìn)行全局配置
桌面空白處右鍵,點(diǎn)擊“Git Bash Here”以打開(kāi)Git命令行窗口
②創(chuàng)建倉(cāng)庫(kù)
當(dāng)我們需要讓Git去管理某個(gè)新項(xiàng)目/已存在項(xiàng)目的時(shí)候,就需要?jiǎng)?chuàng)建倉(cāng)庫(kù)了。注意,創(chuàng)建倉(cāng)庫(kù)時(shí)使用的目錄不一定要求是空目錄,選擇一個(gè)非空目錄也是可以的,但是不建議在現(xiàn)有項(xiàng)目上來(lái)學(xué)習(xí)Git,否則造成的一切后果概不負(fù)責(zé)!
注意:為了避免在學(xué)習(xí)或使用過(guò)程中出現(xiàn)各種奇葩問(wèn)題,請(qǐng)不要使用包含中文的目錄名(父目錄亦是如此)。
a. 創(chuàng)建空目錄
b. 在命令行中進(jìn)入項(xiàng)目目錄pro_git
c. Git倉(cāng)庫(kù)初始化(讓Git知道,它需要來(lái)管理這個(gè)目錄)
指令:git init
表現(xiàn):執(zhí)行之后會(huì)在項(xiàng)目目錄下創(chuàng)建“.git”的隱藏目錄,這個(gè)目錄是Git所創(chuàng)建的,不能刪除,也不能隨意更改其中的內(nèi)容。
③Git常用指令操作
查看當(dāng)前狀態(tài):git status
添加到緩存區(qū):git add 文件名
提交至版本庫(kù):git commit -m “注釋內(nèi)容”
在后續(xù)對(duì)于文件(可以操作1個(gè)或多個(gè))操作之后,重復(fù)使用git add與git commit指令即可。
1.3、時(shí)光穿梭機(jī)——版本回退
版本回退分為兩步驟進(jìn)行操作:
步驟:
①查看版本,確定需要回到的時(shí)刻點(diǎn)
指令:
git log
git log –pretty=oneline
②回退操作
指令:
git reset –hard 提交編號(hào)
案例:想坐時(shí)光機(jī)回到創(chuàng)建好第一個(gè)文件readme.txt的時(shí)候。
注意:回到過(guò)去之后,要想再回到之前最新的版本的時(shí)候,則需要使用指令去查看歷史操作,以得到最新的commit id。
指令:git reflog
小結(jié):
- a. 要想回到過(guò)去,必須先得到commit id,然后通過(guò)git reset –hard 進(jìn)行回退;
- b. 要想回到未來(lái),需要使用git reflog進(jìn)行歷史操作查看,得到最新的commit id;
- c. 在寫(xiě)回退指令的時(shí)候commit id可以不用寫(xiě)全,git自動(dòng)識(shí)別,但是也不能寫(xiě)太少,至少需要寫(xiě)前4位字符;
2、遠(yuǎn)程倉(cāng)庫(kù)
線(xiàn)上倉(cāng)庫(kù)的操作學(xué)習(xí)以Github為例。
2.1、線(xiàn)上倉(cāng)庫(kù)創(chuàng)建
打開(kāi)創(chuàng)建倉(cāng)庫(kù)頁(yè)面:https://github.com/new
圈出的部分為必填項(xiàng),其余根據(jù)實(shí)際需要選擇性補(bǔ)充:
注意:倉(cāng)庫(kù)名要求在當(dāng)前帳號(hào)下唯一。
2.2、兩種常規(guī)使用方式
2.2.1、基于http/https協(xié)議
a. 創(chuàng)建空目錄,名稱(chēng)就稱(chēng)為shop
b. 使用clone指令克隆線(xiàn)上倉(cāng)庫(kù)到本地 語(yǔ)法:git clone 線(xiàn)上倉(cāng)庫(kù)地址
c. 在倉(cāng)庫(kù)上做對(duì)應(yīng)的操作(提交暫存區(qū)、提交本地倉(cāng)庫(kù)、提交線(xiàn)上倉(cāng)庫(kù)、拉取線(xiàn)上倉(cāng)庫(kù))提交到線(xiàn)上倉(cāng)庫(kù)的指令:git push
在首次往線(xiàn)上倉(cāng)庫(kù)shop提交內(nèi)容的時(shí)候出現(xiàn)了403的致命錯(cuò)誤,原因是不是任何人都可以往線(xiàn)上倉(cāng)庫(kù)提交內(nèi)容,必須需鑒權(quán)。
需要修改“.git/config”文件內(nèi)容:
例如:
在設(shè)置好用戶(hù)名密碼之后再次嘗試push指令:
如果看到類(lèi)似上述效果(沒(méi)有fatal錯(cuò)誤)則表示提交成功。
【驗(yàn)證】此時(shí)可以觀察瀏覽器,刷新線(xiàn)上倉(cāng)庫(kù)的地址:
拉取線(xiàn)上倉(cāng)庫(kù):git pull
提醒: 在每天工作的第一件事就是先git pull拉取線(xiàn)上最新的版本;每天下班前要做的是git push,將本地代碼提交到線(xiàn)上倉(cāng)庫(kù)。
2.2.2、基于ssh協(xié)議(推薦)
該方式與前面https方式相比,只是影響github對(duì)于用戶(hù)的身份鑒權(quán)方式,對(duì)于git的具體操作(如提交本地、添加注釋、提交遠(yuǎn)程等操作)沒(méi)有任何影響。
生成公私玥對(duì)指令(需先自行安裝OpenSSH):ssh-keygen -t rsa -C "注冊(cè)郵箱"
步驟:
①生成客戶(hù)端公私玥文件
②將公鑰上傳到Github
實(shí)際操作:
①打開(kāi)提示
②創(chuàng)建公私玥對(duì)文件
③上傳公鑰文件內(nèi)容(id_rsa.pub)
填寫(xiě)完畢之后保存即可。
④執(zhí)行后續(xù)git操作,操作與先前一樣
a. clone線(xiàn)上倉(cāng)庫(kù)到本地(git clone)
b. 修改文件后添加緩存區(qū)、提交本地倉(cāng)庫(kù)、提交線(xiàn)上倉(cāng)庫(kù)
在push的時(shí)候并沒(méi)有提示要求我們輸入帳號(hào)密碼,因?yàn)楣将h已經(jīng)實(shí)現(xiàn)了用戶(hù)身份鑒權(quán)。
線(xiàn)上倉(cāng)庫(kù)的效果:
2.3、分支管理
什么是分支?
在版本回退的章節(jié)里,每次提交后都會(huì)有記錄,Git把它們串成時(shí)間線(xiàn),形成類(lèi)似于時(shí)間軸的東西,這個(gè)時(shí)間軸就是一個(gè)分支,我們稱(chēng)之為master分支。
在開(kāi)發(fā)的時(shí)候往往是團(tuán)隊(duì)協(xié)作,多人進(jìn)行開(kāi)發(fā),因此光有一個(gè)分支是無(wú)法滿(mǎn)足多人同時(shí)開(kāi)發(fā)的需求的,并且在分支上工作并不影響其他分支的正常使用,會(huì)更加安全,Git鼓勵(lì)開(kāi)發(fā)者使用分支去完成一些開(kāi)發(fā)任務(wù)。
查看分支:
注意:當(dāng)前分支前面有個(gè)標(biāo)記“*”。
創(chuàng)建分支:
切換分支:
合并分支:
現(xiàn)在先在dev分支下的readme文件中新增一行并提交本地
切換到master分支下觀察readme文件
將dev分支的內(nèi)容與master分支合并:
刪除分支:
注意:在刪除分支的時(shí)候,一定要先退出要?jiǎng)h除的分支,然后才能刪除。
合并所有分支之后,需要將master分支提交線(xiàn)上遠(yuǎn)程倉(cāng)庫(kù)中:
2.4、沖突的產(chǎn)生與解決
案例:模擬產(chǎn)生沖突。
①同事在下班之后修改了線(xiàn)上倉(cāng)庫(kù)的代碼
注意:此時(shí)我本地倉(cāng)庫(kù)的內(nèi)容與線(xiàn)上不一致的。
②第二天上班的時(shí)候,我沒(méi)有做git pull操作,而是直接修改了本地的對(duì)應(yīng)文件的內(nèi)容
③需要在下班的時(shí)候?qū)⒋a修改提交到線(xiàn)上倉(cāng)庫(kù)(git push)
提示我們要在再次push之前先git pull操作。
【解決沖突】
④先git pull
此時(shí)git已經(jīng)將線(xiàn)上與本地倉(cāng)庫(kù)的沖突合并到了對(duì)應(yīng)的文件中。
⑤打開(kāi)沖突文件,解決沖突
解決方法:需要和同事(誰(shuí)先提交的)進(jìn)行商量,看代碼如何保留,將改好的文件再次提交即可。
⑥重新提交
線(xiàn)上效果:
新手上路小技巧:上班第一件事先git pull,可以在一定程度上避免沖突的產(chǎn)生。
三、Git實(shí)用技能
1、圖形管理工具
①Github for Desktop
Github出品的軟件,功能完善,使用方便。對(duì)于經(jīng)常使用GitHub的開(kāi)發(fā)人員來(lái)說(shuō)是非常便捷的工具。界面干凈,用起來(lái)非常順手,頂部的分支時(shí)間線(xiàn)非常絢麗。
②Source tree
老牌的Git GUI管理工具了,也號(hào)稱(chēng)是最好用的Git GUI工具。功能豐富,基本操作和高級(jí)操作都非常流暢,適合初學(xué)者上手。
③TortoiseGit
對(duì)于熟悉SVN的開(kāi)發(fā)人員來(lái)說(shuō),這個(gè)小烏龜圖標(biāo)應(yīng)該是非常友善了。TortoiseGit 簡(jiǎn)稱(chēng) tgit, 中文名海龜Git。它與其前輩TortoiseSVN都是非常優(yōu)秀的開(kāi)源版本控制客戶(hù)端軟件。
2、忽略文件
場(chǎng)景:在項(xiàng)目目錄下有很多萬(wàn)年不變的文件目錄,例如css、js、images等,或者還有一些目錄即便有改動(dòng),我們也不想讓其提交到遠(yuǎn)程倉(cāng)庫(kù)的文檔,此時(shí)我們可以使用“忽略文件”機(jī)制來(lái)實(shí)現(xiàn)需求。
忽略文件需要新建一個(gè)名為.gitignore的文件,該文件用于聲明忽略文件或不忽略文件的規(guī)則,規(guī)則對(duì)當(dāng)前目錄及其子目錄生效。
注意:該文件因?yàn)闆](méi)有文件名,沒(méi)辦法直接在windows目錄下直接創(chuàng)建,可以通過(guò)命令行Git Bash來(lái)touch創(chuàng)建。
案例:
①先在本地倉(cāng)庫(kù)中新建一個(gè)js目錄以及目錄中js文件
②依次提交本地與線(xiàn)上
③新增.gitignore文件
④編寫(xiě)文件中的規(guī)則(根據(jù)需要編寫(xiě))
⑤再次提交本地與線(xiàn)上
觀察線(xiàn)上倉(cāng)庫(kù)js目錄中是否有新增index.js文件:
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。