Git和Github的学习
?
來源:
秦時明月NightTiger
Git和Github的學習
?
?
?
?
?
?
作者聲明:本博客中所寫的文章,都是博主自學過程的筆記,參考了很多的學習資料,學習資料和筆記會注明出處,所有的內容都以交流學習為主。有不正確的地方,歡迎批評指正。
本文學習視頻是:https://www.bilibili.com/video/av24736323
Git和Github的學習
?
關于Git和Github的相關知識綜述
1、版本控制
2、Git簡介
3、Git命令行操作
4、Git圖形化界面操作
5、Gitlab服務器環境搭建
1、 版本控制工具應該具備哪些功能
1.1、協同修改:多人并行不悖的修改服務器端的同一個文件。
1.2、數據備份:不僅保存目錄和文件的當前狀態,還能夠保存每一個人提交過的歷史狀態。
1.3、版本管理:再保存每一個版本的文件信息的時候要做到不保存重復數據,以節約存儲空間,調高運行效率,這方面SVN采用的是增量式管理的方式,而Git采取了文件系統快照的 方式。
1.4、權限控制:對團隊中參與開發的人員進行權限控制。對團隊開發者貢獻的代碼進行審核——Git獨有。
1.5、歷史記錄:查看修改人、修改時間、修改內存、日志信息。將本地文件恢復到某一個歷史狀態。
1.6、分支管理:循序開發團隊在工作過程中多條生產線同事推進任務,進一步提高效率。
?2、版本控制介紹
2.1、版本控制
工程設計領域中使用 版本控制管理工程藍圖的設計過程。在IT開發過程中也可以使用版本控制思想管理代碼的版本迭代。
2.2版本控制工具
思想:版本控制
實現:版本控制工具
集中式版本控制工具:CVS、SVN、VSS...
分布式版本控制工具:Git、Mercurial、Bazaar、Darcs(避免單點故障)
3、Git簡史
3.1Git發展歷程(略)
3.2Git官網:https://git-scm.com
3.3Git的優勢:
1)大部分操作在本地完成,不需要聯網
2)完整性保證
3)盡可能添加數據額而不是刪除或者修改數據
4)分值操作非常快捷流暢
5)與Linux命令全面兼容
3.4Git的安裝過程(略)
3.5Git的結構
?
3.6Git和代碼托管中心
代碼托管中心的任務:維護遠程庫
1)局域網環境下:Gitlab服務
2)外網環境下:Github? ?碼云
3.7本地庫與遠程庫
團隊內部協作
?
跨團隊協作
?4 Git 命令操作
4.1本地庫初始化
補充:在開始操作之前
Linux的操作命令:
ll? ? ? ?查看當前目錄
ls -la? ? ? 查看當前目錄,帶隱藏資源的
ls -l|less 分屏查看
cd Git/ ? 進入到某一目錄
mkdir WeChat? ? 建立一個目錄叫做WeChat
git init git初始化命令
pwd 是print working directory 命令顯示整個路徑名
ll .git/ 顯示此目錄中? .git目錄下的文件有哪些 查看.git的目錄
cd ~ 家目錄
1)命令: git add
2)效果:
?
3)注意:.git目錄中存放的是本地庫相關的子目錄和文件,不要刪除,也不要隨意修改。
?4.2 設置簽名
1)形式
用戶名:
Email地址:goodMorning@qq.com
2)作用:區分不同開發人員的身份
3)辨析:這里設置的簽名和登錄遠程庫(代碼托管中心)的賬號、密碼沒有任何關系
4)命令
項目級別/倉庫級別:僅僅在當前本地庫范圍內有效
git config user.name tom_pro
git config user.email goodMorning@qq.com
信息保存位置:? ?./.git/config 文件
?
系統用戶級別:登錄當前操作系統的用戶范圍
git config --global user.name tom_glb
git config --global user.email goodMorning_glb@qq.com
信息保存位置:? ~/.gitconfig? 文件
?
級別優先級:
就近原則:項目級別優先于系統用戶級別,二者都有時采用項目級別的簽名
如果只有系統用戶級別的簽名,就以系統用戶級別的簽名為準
二者都沒有不允許
?4.3 Git版本控制的操作
本節詳細內容:https://www.bilibili.com/video/av24736323/?p=12
git status
vim good.txt 新建一個txt文件
:wq 關閉文件
git add good.txt 將good.txt加入到暫存區
git rm --cached good.txt 將good.txt從暫存區里面移除
git commit good.txt 將good.txt提交
:set nu? 顯示行號
i? ? ? ? ? ? ? ? ? ? ? ? ?進入編輯模式
cat good.txt? ? ? ?顯示good.txt的內容
git reset HEAD good.txt? ? ? ? ? ?將good.txt改正沒有暫存
git commit -m "My second" good.txt? ?常用的 不用進入vim編輯器
?
基本操作總結:?
狀態查看? gitstatus 查看工作區、暫存區轉臺
添加操作? git add [file name] 將工作區的“新建/修改”添加到暫存區
提交操作 git commit -m "commit message" [file name] 將暫存區內容提交到本地庫
再次回顧
查看歷史記錄
git log? ? 最全內容
多屏顯示控制方式:
空格向下翻頁
b向上翻頁
q退出
?
git log --pretty=oneline
git log --oneline
git reflog
?
?HEAD@{移動到當前版本需要多少步}
?
前進后退歷史版本操作
基于索引值操作[推薦]
git reset --hard 索引值
?
使用^符號:只能后退到之前存在的版本
git reset --hard HEAD^? ? 一個^表示后退一步,n個表示后退n步
使用~符號:只能后退到之前的版本
git reset --hard~3 表示后退3步
?reset命令三個參數對比
--soft 僅僅在本地庫移動HEAD指針
--mixid ? 在本地庫移動HEAD指針? ?重置暫存區
--hard 在本地庫移動HEAD指針? 重置暫存區? ?重置工作區
?
?
永久刪除文件后怎么恢復
rm aaa.txt 刪除文件
前提:刪除前,文件存在時的狀態提交到了本地庫
操作:git reset --hard [指針位置]
刪除操作已經提交到本地庫:指針位置指向歷史記錄
刪除操作尚未提交到本地庫:指針位置使用HEAD
?
比較文件差異
git diff [文件名]? ? ? git diff aaa.txt? ? ? 將工作區中的文件和暫存區進行比較
git diff[本地庫中歷史版本][文件名]? ?git diff HEAD aaa.txt
git diff HEAD^ aaa.txt將工作區中的文件和本地庫歷史記錄比較
不帶文件名比較多個文件
?4.4分支管理
?什么是分支?
在版本控制過程中,使用多條線同時推進多個任務。
?
分支的好處:
同時并行推進多個功能開發,提高 開發效率
各個分支開發過程中,如果一個分支開發失敗,不會對其他分支有任何影響,失敗的分支刪除重新開始即可。
?分支操作:
創建分支? ?git branch [分支名]
查看分支? ?git branch -v
切換分支? git checkout [分支名]
合并分支? 第一步:切換到 接受修改的分支(被合并,增加新內容)上,git checkout [分支名]
? 第二步:執行命令? git merge [有新內容的分支]
?分支沖突?
沖突表現
沖突解決
第一步:編輯文件,刪除特殊符號
第二步:把文件修改到滿意的程度,保存退出
第三步:git add [文件名]
第四步:git commit -m "日志信息"
? 注意:此時commit一定不能帶具體文件
5、Git基本原理
5.1哈希?
哈希是一個系列的加密算法,各個不同的哈希散發雖然加密強度不同,但是有以下幾個共同點:
1)不敢輸入數據的數據量有多大,輸入同一個哈希算法,得到的加密結果長度固定。
2)哈希算法確定,輸入數據確定,輸出數據能夠保證不變
3)哈希算法確定,輸入數據有變化,輸出數據一定有變化,而且通常變化很大
?4)哈希算法不可以
Git底層采用的是 SHA-1 算法。
?5.2Git保存版本的機制
集中式版本控制工具的文件保存管理機制
?
Git的文件管理機制
?
?
Git文件管理機制細節
?Git的“提交對象”
提交對象及其父對象形成的鏈條
5.3Git分支管理機制
分支的創建
創建分支? ?git branch [分支名]
git branch hot_fix? 新建一個分支?
分支的切換
?git checkout [分支名]
?
?
6 GitHub
6.1 賬號信息
GitHub 首頁就是注冊頁面?https://github.com/
?cd ..? 上一級目錄
git remote -v
git remote add origin?https://github.com/xzzxqinlihui/huashan.git? 給遠程地址起別名
?git push origin master? ?推送 別名 分支
克隆:
git clone?https://github.com/xzzxqinlihui/huashan.git? 克隆
git origin [遠程地址]
?完整的把遠程庫下載到本地
創建origin遠程地址別名
初始化本地庫
?加入團隊的操作:https://www.bilibili.com/video/av24736323/?p=38
?
拉取
pull就是fetch + merge
git fetch [遠程庫的別名][遠程分支名]
git merge [遠程庫地址別名/遠程分支名]
git pull origin master
?
?git fetch origin master 從遠程庫中抓取
?解決沖突
第一步:如果不是基于Github遠程庫最先版本所做的修改,不能推送,必須先拉取。
第二步 :拉取下來后如果進入沖突狀態,則按照“分支沖突解決”操作解決即可。
?跨團隊協作:https://www.bilibili.com/video/av24736323/?p=41
?
?
?
本地修改,然后推送到遠程
pull request
?
?
?
?
對話
?
?
審核代碼
合并代碼
將遠程庫 拉取到 本地庫
?SSH登錄:https://www.bilibili.com/video/av24736323/?p=42
7.Eclipse操作?
eclipse中的git插件
?7.1工程初始化為本地庫
操作流程: 工程=>右鍵=>Team=>Share Project=>Git=>Next
勾選對話框
?會出現如下圖所示對話框
?
Finish
7.2Eclipse中忽略文件
概念:Eclipse待定文件
這些都是Eclipse為了管理我們創建的工程而維護的文件,和我們開發的代碼沒有直接關系,最好不要在Git中進行追蹤,也就是把它們忽略。
.classpath文件
.project文件
.settings目錄下所有文件
為什么要忽略Eclipse特定文件呢?
同一個團隊中很難保證大家來使用相同的IDE工具,而IDE工具不同時,相關工程待定文件就有可能不同。如果這些文件加入版本控制,那么開發時很可能需要為了這些文件解決沖突。
?
?
?
?
?
?
?
?
?
7.4 Oxygen Eclipse 克隆工程操作
?import...導入
?
?
?
?
?
?
?
?
?
?
8.Git工作流
8.1概念
在項目開發過程中使用Git的方式
8.2分類
集中式工作流
像SVN一樣,集中式工作流以中央倉庫為項目所有修改的單點實體。所有修改都是提交到Master這個分支上。
這種方式與SVN的主要區別就是開發人員有本地庫,Git很多特性并沒有用到。
GitFlow工作流
GitFlow工作流通過為功能開發,發布準備和維護設立獨立的分支,讓發布迭代過程更流暢。嚴格的分支模型也為大型項目提供了非常必要的結構。
?
Forking工作流
Forking工作流是在GitFlow基礎上,充分利用了Git的Fork和pull request的功能已達到代碼審核的目的,更適合安全可靠的管理大團隊的開發者,而且能接受不信任貢獻者的提交。
8.3GitFlow工作流詳解
分支種類
Git工作流:https://www.bilibili.com/video/av24736323/?p=54
實戰
具體操作
創建分支
?命名
?
切換分支
遠程的分支
點擊
檢出遠程的新分支
?
切換回master
?
合并分支
?選擇分支
合并結果
推送到遠程
合并成功后,將master推送到遠程
9 Gitlab服務器搭建過程
詳細過程:?https://www.bilibili.com/video/av24736323/?p=57
轉載于:https://www.cnblogs.com/LXL616/p/10666286.html
總結
以上是生活随笔為你收集整理的Git和Github的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery异步加载数据并添加事件示例
- 下一篇: h5侠客行服务器维护有更新什么,侠客行h