學自:https://www.bilibili.com/video/BV1sJ411D7xN?p=1
轉自一篇word
鏈接:https://pan.baidu.com/s/1_agGetbXMjak7B3uECy2gA
提取碼:nm4d
一、Git基礎
1.Git介紹
Git是目前世界上最先進的分布式版本控制系統。
ex:
“最終最終最終稿”
除非你就是傳說中的改一步備份一次永遠不刪除的大師!
如果不是我相信git可以幫助你
2.Git與Github
2.1、兩者的區別
Git是一個分布式版本控制系統,簡單的說其就是一個軟件,用於記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的軟件。
Github(https://www.github.com)是一個為用戶提供Git服務的網站,簡單說就是一個可以放代碼的地方(不過可以放的當然不僅是代碼)。Github除了提供管理Git的web界面外,還提供了訂閱、關注、討論組、在線編輯器等豐富的功能。Github被稱之為全球最大的基友網站(凌晨兩三點一群男人在某網站上洽談…)。
2.2、Gitub注冊與git安裝
-
github
官網:https://github.com/(記住自己的又想與昵稱) -
git
安裝:https://git-scm.com/downloads(安裝過程全點下一步就行)
右鍵任意一個目錄出現這兩個就安裝成功啦
二、Git的使用
1.1、本地倉庫
1.1、工作流程
- git本地操作的三個區域
- 工作流程
1.2、本地倉庫操作
什么是倉庫呢?倉庫又名版本庫,英文名repository,我們可以簡單理解成是一個目錄,用於存放代碼的,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除等操作Git都能跟蹤到。
①安裝好進行全局配置(右鍵左面選擇Git Bash Here)
此時會彈出一個命令框
$ git config --global user.name “用戶名”
$ git config --global user.email “郵箱地址”
②創建倉庫
當我們需要讓Git去管理某個新項目/已存在項目的時候,就需要創建倉庫了。注意,創建倉庫時使用的目錄不一定要求是空目錄,選擇一個非空目錄也是可以的,但是不建議在現有項目上來學習Git,否則造成的一切后果概不負責!
注意:為了避免在學習或使用過程中出現各種奇葩問題,請不要使用包含中文的目錄名(父目錄亦是如此)。
git倉庫初始化(pro_git該文件名字是任意取的所放的目錄也是任意的)
③Git常用指令操作
- git add ( 是 軟 件 自 帶 的 , 輸 入 命 令 行 前 面 默 認 出 現 是軟件自帶的,輸入命令行前面默認出現 是軟件自帶的,輸入命令行前面默認出現 )
# 傳入一個文件
$ git add 文件名
# 傳入多個文件
$ git add 文件名1 文件名2 文件名3
# 傳入該目錄下的所有文件
$ git add.
- git commit -m “注釋內容”
1.3、版本回退
主要分為兩個步驟
步驟:
①查看版本,確定需要回到的時刻點
指令:
git log
git log --pretty=oneline
②回退操作
指令:
git reset --hard 提交編號
demo: 想坐時光機回到創建好第一個文件readme.txt的時候。
注意:回到過去之后,要想再回到之前最新的版本的時候,則需要使用指令去查看歷史操作,以得到最新的commit id。
指令:git reflog
小結:
a. 要想回到過去,必須先得到commit id,然后通過git reset –hard 進行回退;
b. 要想回到未來,需要使用git reflog進行歷史操作查看,得到最新的commit id;
c. 在寫回退指令的時候commit id可以不用寫全,git自動識別,但是也不能寫太少,至少需要寫前4位字符;
2、遠程倉庫
線上倉庫的操作學習以Github為例。
2.1、線上倉庫創建
打開創建倉庫頁面:https://github.com/new
圈出的部分為必填項,其余根據實際需要選擇性補充:
2.2、兩種常規使用方式
2.2.1、基於http/https 協議
a. 創建空目錄,名稱就稱為shop
b. 使用clone指令克隆線上倉庫到本地
語法:git clone 線上倉庫地址
c. 在倉庫上做對應的操作(提交暫存區、提交本地倉庫、提交線上倉庫、拉取線上倉庫)
提交到線上倉庫的指令:git push
在首次往線上倉庫shop提交內容的時候出現了403的致命錯誤,原因是不是任何人都可以往線上倉庫提交內容,必須需鑒權。
需要修改“.git/config”文件內容:
ex:
如果看到類似上述效果(沒有fatal錯誤)則表示提交成功。
【驗證】此時可以觀察瀏覽器,刷新線上倉庫的地址:
拉取線上倉庫:git pull
提醒:
在每天工作的第一件事就是先git pull拉取線上最新的版本;每天下班前要做的是git push,將本地代碼提交到線上倉庫。
2.2.2、基於ssh協議(推薦)
該方式與前面https方式相比,只是影響github對於用戶的身份鑒權方式,對於git****的具體操作(如提交本地、添加注釋、提交遠程等操作)沒有任何影響。
生成公私玥對指令(需先自行安裝OpenSSH):ssh-keygen -t
rsa -C “注冊郵箱”
步驟:
①生成客戶端公私玥文件
②將公鑰上傳到Github
實際操作:
①打開提示
②創建公私玥對文件
③上傳公鑰文件內容(id_rsa.pub)
填寫完畢之后保存即可。
④執行后續git操作,操作與先前一樣
a. clone線上倉庫到本地(git clone)
b. 修改文件后添加緩存區、提交本地倉庫、提交線上倉庫
在push的時候並沒有提示要求我們輸入帳號密碼,因為公私玥已經實現了用戶身份鑒權。
線上倉庫的效果:
2.3、分支管理
什么是分支?
在版本回退的章節里,每次提交后都會有記錄,Git把它們串成時間線,形成類似於時間軸的東西,這個時間軸就是一個分支,我們稱之為master分支。
在開發的時候往往是團隊協作,多人進行開發,因此光有一個分支是無法滿足多人同時開發的需求的,並且在分支上工作並不影響其他分支的正常使用,會更加安全,Git鼓勵開發者使用分支去完成一些開發任務。
分支相關指令:
-
查看分支:git branch
-
創建分支:git branch 分支名
-
切換分支:git checkout 分支名
-
刪除分支:git branch -d 分支名
-
合並分支:git merge 被合並的分支名
對於新分支,可以使用“git checkout -b 分支名”指令來切換分支,-b選項表示創建並切換,相當於是兩個操作指令。
查看分支:
創建分支:
切換分支:
合並分支:
現在先在dev分支下的readme文件中新增一行並提交本地
切換到master分支下觀察readme文件
將dev分支的內容與master分支合並:
刪除分支:
注意:在刪除分支的時候,一定要先退出要刪除的分支,然后才能刪除。
合並所有分支之后,需要將master分支提交線上遠程倉庫中:
2.4、沖突的產生與解決
案例:模擬產生沖突。
①同事在下班之后修改了線上倉庫的代碼
注意:此時我本地倉庫的內容與線上不一致的。
②第二天上班的時候,我沒有做git pull操作,而是直接修改了本地的對應文件的內容
③需要在下班的時候將代碼修改提交到線上倉庫(git
push)
提示我們要在再次push之前先git pull操作。
【解決沖突】
④先git pull
此時git已經將線上與本地倉庫的沖突合並到了對應的文件中。
⑤打開沖突文件,解決沖突
解決方法:需要和同事(誰先提交的)進行商量,看代碼如何保留,將改好的文件再次提交即可。
⑥重新提交
線上效果:
新手上路小技巧:上班第一件事先git pull,可以在一定程度上避免沖突的產生。
三、Git使用技能
1、圖形管理工具
①Github for Desktop
Github出品的軟件,功能完善,使用方便。對於經常使用GitHub的開發人員來說是非常便捷的工具。界面干凈,用起來非常順手,頂部的分支時間線非常絢麗。
②Source tree
老牌的Git GUI管理工具了,也號稱是最好用的Git GUI工具。功能豐富,基本操作和高級操作都非常流暢,適合初學者上手。
③TortoiseGit
2、忽略文件
在某些情況下我們希望避免一些我們不希望提交的東西被提交,可以使用忽略文件機制來實現
忽略文件需要新建一個名為.gitignore的文件,該文件用於聲明忽略文件或不忽略文件的規則,規則對當前目錄及其子目錄生效。
注意:該文件因為沒有文件名,沒辦法直接在windows目錄下直接創建,可以通過命令行Git Bash來touch創建。
常見規則寫法有如下幾種:
-
/mtk/ 過濾整個文件夾
-
*.zip 過濾所有.zip文件
-
/mtk/do.c 過濾某個具體文件
-
!index.php 不過濾具體某個文件
在文件中,以#開頭的都是注釋。
案例:
①先在本地倉庫中新建一個js目錄以及目錄中js文件
②依次提交本地與線上
③新增.gitignore文件
④編寫文件中的規則(根據需要編寫)
⑤再次提交本地與線上
觀察線上倉庫js目錄中是否有新增index.js文件:
(我試了一下貌似在配置.gitignore之前就存在的文件在配置了.gitignore之后不能忽略)