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