Git的學習
什麼是 Git 、 GitHub
Git是目前世界上最先進的分佈式版本控制系統
- Git 是一個分佈式版本控制系統,簡單的說其就是一個軟件,用於記錄一個或若干文件內容 變化,以便將來在閱特定版木修訂情況的軟件
- Github 是一個爲用戶提供Git服務的網站,簡單說就是一個可以 放代碼的地方(不過可以放的當然不僅是代碼)。Github 除了提供管理Git的Web界面外,還提供了訂閱、關注、討論組、在線編輯器等卡富的功能
- Git本地操作的三個區域:
本地倉庫操作
什麼是倉庫
倉庫又名版本庫,英文名repository,我們可以簡單理解成是一個目錄,用於存放代碼的,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除等操作Git都能跟蹤到
- 在安裝好後首次使用需要先進行全局配置
打開“Git Bash Here”以打開Git命令行窗口
$ git config --global user.name "用戶名" // 以GitHub爲例所以 用戶名 就是GitHub上的用戶名
$ git config --global user.email "郵箱地址" // 同理
- 創建倉庫
當我們需要讓Git去管理某個新項目/已存在項目的時候,就需要創建倉庫了。注意,創建倉庫時使用的目錄不一定要求是空目錄,選擇一個非空目錄也是可以的,但是不建議在現有項目上來學習Git,否則造成的一切後果概不負責!
ps:爲了避免在學習或使用過程中出現各種奇葩問題,請不要使用包含中文的目錄名
- 步驟
創建空目錄$ mkdir 文件名
進入目錄$ cd 文件名
Git倉庫初始化$ git init
ps:執行之後會在項目目錄下創建“.git”的隱藏目錄,這個目錄是Git所創建的,不能刪除,也不能隨意更改其中的內容
- Git常用指令操作
查看當前狀態:git status
添加到緩存區:git add 文件名
說明:git add 指令,可以添加一個文件,也可以同時添加多個文件
語法1:git add 文件名
語法2:git add 文件名1 文件名2 文件名3 ...
語法3:git add.
- 提交到版本庫:
git commit-m "註釋內容"
遠程代碼倉庫
基於 Https 協議的遠程倉庫
關於鑑權的錯誤
將用戶名和密碼寫入http地址中,告訴GitHub並得到驗證
同步線上倉庫(拉取線上倉庫):
指令:git pull
ps:在每天工作的第一件事就是先git pull 拉取線上最新的版本;每天下班前要做的是git push,將本地代碼提交到線上倉庫
基於 ssh 協議的遠程倉庫
該方法與上面的 Https 方式相比,只是影響GitHub對於用戶的身份鑑權方式,對於git具體操作(如本地提交 、添加註釋 、提交遠程等操作)沒有任何影響
生成公私鑰對指令(需要安裝 OpenSSH):ssh-keygen -t rsa -C "註冊郵箱"
步驟
- 生成客戶端公私鑰文件
- 將公鑰上傳至GitHub
創建公私鑰文件
上傳公鑰文件
使用操作 同Https
版本回退分爲兩步驟進行操作:
- 查看版本號,確定需要回到的版本編號
指令:git log
或git log--pretty=oneline
- 回退操作
指令:git reset --hard 提交編號
- 回到過去後再想查看最新的時候的版本號
指令:git reflog
小結:
- 要想回到過去,必須先得到commit id,然後通過git reset -hard進行回退
- 要想回到未來,需要使用git reflog進行歷史操作查看,得到最新的commit id
- 在寫回退指令的時候commit id可以不用寫全,git自動識別,但是也不能寫太少,至少需要寫前4位字符
分支管理
什麼是分支? 如下圖
在版本回退的章節裏,每次提交後都會有記錄,Git 把它們串成時間線,形成類似於時間軸的東西,這個時間抽就是一個分支,我們稱之爲master分支
在開發的時候往往是團隊協作,多人進行開發,因此光有一個分支是無法滿足多人同時開發的需求的,並且在分支上工作並不影響其他分支的正常使用,會更加安全,Git 鼓勵開發者使用分支去完成一些開發任務
分支相關指令
查看分支:git branch
創建分支:git branch 分支名
切換分支:git checkout 分支名
刪除分支:git branch -d 分支名
合併分支:git merge 被合併的分支名
查看分支
ps:當前分支前面有個標記 “ * ”
創建分支
切換分支
合併分支
刪除分支
ps:在刪除分支的時候,一定要先退出要刪除的分支,然後才能刪除
衝突的產生與解決
衝突的產生:本地倉庫文件未與遠程倉庫修改之後的文件同步,就修改本地文件執行上傳操作,產生衝突
解決:從新同步遠程倉庫文件,刪除被修改文件中不需要的部分,再次上傳遠程倉庫
ps:避免此衝突的有效方法是,次日工作一定同步前天遠程倉庫和本地倉庫中的文件
git使用技能
git GUI工具
-
GitHub for Desktop
Github 出品的軟件,功能完善,使用方便。對於經常使用 GitHub的開發人員來說是非常便捷的工具。界面乾淨,用起來非常順手,頂部的分支時間線非常絢麗 -
Source tree
老牌的 Git GUI管理工具,也號稱最好用的Git GUI工具。功能豐富,基本操作和高級操作都非常流暢,適合初學者上手
忽略文件
場景:在項目目錄下有很多萬年不變的文件目錄,例如 css、is、images 等,或者還有一些目錄即便有改動,我們也不想讓其提交到遠程倉庫的文檔,此時我們可以使用“忽略文件”機制來實現需求
忽略文件需要新建一個名爲 .gitignore 的文件,該文件用於聲明忽略文件或不忽略文件的規則,規則對當前目錄及其子目錄生效
ps:該文件因爲沒有文件名,沒辦法直接在 windows 目錄下直接創建,可以通過命令行 Git Bash 來 touch 創建
常用規則:
1)/mtk/ 過濾整個文件夾
2)*.zip 過濾所有.zip文件
3)/mtk/do.c 過濾某個具體文件
4)!index.html 不過濾具體某個文件
在文件中以 # 開頭的都是註釋
ps:學到這裏平時的開發工作已經足夠了