目錄
一、git概念
【1】Git技術:公司必備,一定要會
【2】Git概念:
Git是一個免費的、開源的分散式版本控制系統,可以快速高效地處理從小型到大型的專案。
【3】什麼是版本控制?
【4】為什麼要使用版本控制?
【5】版本控制系統的分類:
1、集中化的版本控制系統:
集中化的版本控制系統諸如CVS, SVN 以及Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。多年以來,這已成為版本控制系統的標準做法,這種做法帶來了許多好處,現在,每個人都可以在一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權,並且管理一個集中化的版本控制系統;要遠比在各個客戶端上維護本地資料庫來得輕鬆容易。
事分兩面,有好有壞。這麼做最顯而易見的缺點是中央伺服器的單點故障。如果伺服器當機一小時,那麼在這一小時內, 誰都無法提交更新,也就無法協同工作。
2、分散式的版本控制系統
由於上面集中化版本控制系統的那些缺點,於是分散式版本控制系統面世了。
在這類系統中,像Git, BitKeeper 等,客戶端並不只提取最新版本的檔案快照,而是把程式碼倉庫完整地映象下來。
更進一步,許多這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動。這樣,你就可以在同一個專案中分別和不同工作小組的人相互協作。
分散式的版本控制系統在管理專案時存放的不是專案版本與版本之間的差異.它存的是索引(所需磁碟空間很少所以每個客戶端都可以放下整個專案的歷史記錄)
二、git簡史
BitKeeper【1】簡史:百度百科
Linux--->程式碼越來越多--->優化做的越來越好---->專案管理工具---->BitKeeper----->一週開發Git----->一個月之內將Linux部署到Git上---->免費、開源---->廣泛應用
三、git的安裝
【1】Git官網:
附百度雲盤下載地址:
連結:https://pan.baidu.com/s/1Y7oJK7tA3B9FS5rsWBW4oQ
提取碼:ukpz
【2】安裝
直接下一步
安裝成功之後,在桌面點選右鍵選擇:Git Bash Here開啟終端
四、git結構
Git結構
五、程式碼託管中心—本地庫和遠端庫的互動方式
【1】程式碼託管中心是幹嘛的呢?
我們已經有了本地庫,本地庫可以幫我們進行版本控制,為什麼還需要程式碼託管中心呢?
它的任務是幫我們維護遠端庫,
下面說一下本地庫和遠端庫的互動方式,也分為兩種:
(1)團隊內部協作
(2)跨團隊協作
跨團隊協作
【2】託管中心種類:
區域網環境下: 可以搭建 GitLab伺服器作為程式碼託管中心,GitLab可以自己去搭建
外網環境下:可以由GitHub或者Gitee作為程式碼託管中心,GitHub或者Gitee是現成的託管中心,不用自己去搭建
六、初始化本地倉庫
在【Git】中的命令和Linux是一樣:
【1】清屏 clear
【2】檢視目錄結構 ll
【3】檢視安裝Git的版本 git --version
【初始化本地倉庫】
【1】開啟Git Bash Here
【2】註冊身份(簽名)
設定使用者名稱:
git config --global user.name "jason_yu"
設定郵箱:
git config --global user.email "335816866@qq.com"
【3】使用git init命令來進行初始化工作
【4】對應目錄中GitReps中生成一個.git的隱藏目錄
注意事項:這個本地庫中的.git目錄不要隨意刪除或者修改,容易出問題。
七、git常用命令
1、add和commit命令
新增檔案: add 提交檔案:commit
【1】建立一個檔案Demo.txt
【2】git add把本地工作區的程式碼提交到暫存區中
【3】git commit 從暫存區中提交到本地倉庫中
git commit -m "這是我第一次提交的Demo.txt" Demo.txt
注意事項:
1、不放到本地倉庫的檔案,是不能被git管理的;
2、即使放在本地倉庫的檔案,git也不能直接進行管理,必須通過add、commit命令把檔案提交
到本地庫中,git才能進行管理。
2、status命令
git status看的是工作區和暫存區的狀態
把Demo2.txt提交至暫存區
檢視狀態:
再次把暫存區中的檔案提交至本地庫中
修改Demo2.txt中的內容
檢視狀態:
使用git add再次提交檔案到暫存區中
使用git commit提交至本地庫
檢視狀態
3、log命令
git log 可以讓我們檢視提交的,顯示從最近到最遠的日誌
當歷史記錄過多的時候,檢視日誌的時候,有分頁效果,分屏效果,一頁展示不下:
下一頁:空格
上一頁:b
顯示末尾:end
退出:q
日誌顯示方式:
【1】方式1:git log --->分頁
【2】方式2:git log --pretty=oneline
【3】方式3:git log --oneline
【4】方式4:git reflog
多了一個引數:HEAD@{數字}
數字的含義:當前HEAD指標回到指定歷史版本需要走的步數。
4、reset命令
reset命令:前進或者後退歷史版本
複製:在終端中選中就是複製了
貼上: 右鍵:paste
5、hard引數、mixed引數、soft引數
【reset引數】
1、【hard】git reset --hard
特點:當本地庫中的指標發生偏移的時候,那麼暫存區會重置,而且工作區也會重置。
2、【mixed】git reset --mixed
特點:當本地庫中的指標發生偏移的時候,那麼暫存區會重置,而工作區不動。
3、【soft】git reset --soft
特點:當本地庫中的指標發生偏移的時候,暫存區和工作區都不動。
【結論】我們工作的時候,--hard用的最多。
6、刪除檔案-找回本地庫刪除的檔案
【1】建立一個檔案Test.txt
【2】使用add新增到暫存區
【3】使用commit提交到本地庫
【4】刪除工作區的檔案
【5】同步工作區和暫存區的狀態
【6】檢視日誌
【7】找回本地庫中刪除的檔案:實際上就是把指標指到新增的那個歷史版本就可以了。
7、找回暫存區刪除的檔案
【1】刪除工作區的檔案
【2】同步暫存區的檔案
使用add新增到暫存區
【3】後悔了:實際上就是把指標指到新增的那個歷史版本就可以了。
8、diff命令
【1】先建立一個檔案,新增到暫存區,再提交到本地庫:
導致:工作區 和 暫存區 不一致,比對:
總結: git diff [檔名] ---》 將工作區中的檔案和暫存區中檔案進行比較
多個檔案的比對:
總結:git diff --->比較工作區中和暫存區中 所有檔案的差異
比較暫存區和本地庫中差別:
git diff [歷史版本][檔名] ---》比較暫存區和本地庫中內容
八、git中的分支
1、什麼是分支
【1】什麼是分支:
在版本控制過程中,使用多條線同時推進多個任務。這裡面說的多條線,就是多個分支。
【2】通過一張圖展示分支:
【3】分支的好處:
同時多個分支可以並行開發,互相不耽誤,互相不影響,提高開發效率
如果有一個分支功能開發失敗,直接刪除這個分支就可以了,不會對其他分支產生任何影響。
2、操作分支
1)檢視、建立、切換分支
【1】在工作區建立一個Test4.txt檔案,然後提交到暫存區,提交到本地庫:
【2】檢視分支:
【3】建立分支,再檢視:
【4】切換分支再檢視:
2)衝突問題--如何解決衝突問題
【1】進入branch01分支,增加內容:
【2】將分支切換到master:
然後在主分支下 加入內容:
【3】再次切換到branch01分支檢視:
【4】將branch01分支 合併到 主分支 :
(1)進入主分支:
(2)將branch01中的內容和主分支內容進行合併:
檢視檔案:出現衝突:
解決:
公司內部商議解決,或者自己決定 人為決定,留下想要的即可:
將工作區中內容新增到暫存區:
然後進行commit操作:
九、github賬號註冊
官網:
註冊賬號
當你建立resp庫的時候會讓你驗證一封郵件,進入你自己的郵箱,點一下就ok!
修改頭像
下一步自己嘗試做一下。
十、初始化本地庫
本地庫和遠端庫的互動方式
【1】建立本地庫
mkdir GitResp2
【2】初始化本地庫
【3】建立一個檔案Demo.txt
【4】提交至暫存區和本地庫
十一、建立遠端庫
【1】new respository
【2】進入遠端庫建立頁
遠端庫地址:
十二、在本地建立遠端庫地址的別名
遠端庫的地址:
點選進入:
遠端庫地址比較長,每次複製比較麻煩
https://github.com/jason1983-git/GitResp2.git
在Git本地將地址儲存,通過別名
檢視別名:
起別名:
十三、推送操作
推送成功以後,檢視自己的遠端庫:
十四、克隆操作
遠端庫地址複製:
克隆操作:
克隆操作可以幫我們完成:
(1)初始化本地庫
(2)將遠端庫內容完整的克隆到本地
(3)替我們建立遠端庫的別名:
十五、邀請加入團隊,push操作
【1】更新本地庫資訊:
【2】push內容到遠端庫中去:
發現可以直接push進去,並沒有讓我錄入賬號密碼,或者也沒有提示錯誤 - --》結果 很詭異
原因:git在本地會有快取
清除本地快取
現在再次重新push,發現出錯了:
必須要加入團隊:
登入專案經理的賬號,邀請普通成員:
登入被邀請者的賬號,接收邀請:(在位址列錄入邀請連結即可: )
使用專案經理的賬號檢視遠端庫的狀態
十六、遠端庫修改的拉取操作
【1】拉取操作 pull操作,相當於 fetch+merge
【2】專案經理先確認遠端庫內容是否更新了:
【3】專案經理進行拉取:
(1)先是抓取操作:fetch:
在抓取操作執行後,只是將遠端庫的內容下載到本地,但是工作區中的檔案並沒有更新。工作區中還是原先的內容:
抓取後可以去遠端庫看看內容是否正確:
然後發現內容都正確,就可以進行合併操作了:
合併之前應該將分支切換回來:
(2)進行合併:merge:
--------------------------------------------------------------------------------------------------------------------------------
遠端庫的拉取可以直接利用pull命令來完成:
fetch+merge操作:---》為了保險期間,慎重
pull --->程式碼簡單,比較省事
未完待續,敬請期待... ...