目錄
一、git概念
二、git簡史
三、git的安裝
四、git結構
五、代碼托管中心—本地庫和遠端庫的互動方式
六、初始化本地倉庫
七、git常用指令
1、add和commit指令
2、status指令
3、log指令
4、reset指令
5、hard參數、mixed參數、soft參數
6、删除檔案-找回本地庫删除的檔案
7、找回暫存區删除的檔案
8、diff指令
八、git中的分支
1、什麼是分支
2、操作分支
九、github賬号注冊
十、初始化本地庫
十一、建立遠端庫
十二、在本地建立遠端庫位址的别名
十三、推送操作
十四、克隆操作
十五、邀請加入團隊,push操作
十六、遠端庫修改的拉取操作
【1】Git技術:公司必備,一定要會
【2】Git概念:
Git是一個免費的、開源的分布式版本控制系統,可以快速高效地處理從小型到大型的項目。
【3】什麼是版本控制?
版本控制是一種記錄一個或若幹檔案内容變化,以便将來查閱特定版本修訂情況的系統 。
【4】為什麼要使用版本控制?
軟體開發中采用版本控制系統是個明智的選擇。
有了它你就可以将某個檔案回溯到之前的狀态,甚至将整個項目都回退到過去某個時間點的狀态。就算你亂來一氣把整個項目中的檔案改的改删的删,你也照樣可以輕松恢複到原先的樣子。
但額外增加的工作量卻微乎其微。你可以比較檔案的變化細節,查出最後是誰修改了哪個地方,進而找出導緻怪異問題出現的原因,又是誰在何時報告了某個功能缺陷等等。
【5】版本控制系統的分類:
1、集中化的版本控制系統:

集中化的版本控制系統諸如CVS, SVN 以及Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過用戶端連到這台伺服器,取出最新的檔案或者送出更新。多年以來,這已成為版本控制系統的标準做法,這種做法帶來了許多好處,現在,每個人都可以在一定程度上看到項目中的其他人正在做些什麼。而管理者也可以輕松掌控每個開發者的權限,并且管理一個集中化的版本控制系統;要遠比在各個用戶端上維護本地資料庫來得輕松容易。
事分兩面,有好有壞。這麼做最顯而易見的缺點是中央伺服器的單點故障。如果伺服器當機一小時,那麼在這一小時内, 誰都無法送出更新,也就無法協同工作。
2、分布式的版本控制系統
由于上面集中化版本控制系統的那些缺點,于是分布式版本控制系統面世了。
在這類系統中,像Git, BitKeeper 等,用戶端并不隻提取最新版本的檔案快照,而是把代碼倉庫完整地鏡像下來。
更進一步,許多這類系統都可以指定和若幹不同的遠端代碼倉庫進行互動。這樣,你就可以在同一個項目中分别和不同工作小組的人互相協作。
分布式的版本控制系統在管理項目時存放的不是項目版本與版本之間的差異.它存的是索引(所需磁盤空間很少是以每個用戶端都可以放下整個項目的曆史記錄)
BitKeeper【1】簡史:百度百科
Linux--->代碼越來越多--->優化做的越來越好---->項目管理工具---->BitKeeper----->一周開發Git----->一個月之内将Linux部署到Git上---->免費、開源---->廣泛應用
【1】Git官網:
Git
附百度雲盤下載下傳位址:
連結:https://pan.baidu.com/s/1Y7oJK7tA3B9FS5rsWBW4oQ
提取碼:ukpz
【2】安裝
直接下一步
安裝成功之後,在桌面點選右鍵選擇:Git Bash Here打開終端
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 "[email protected]"
【3】使用git init指令來進行初始化工作
【4】對應目錄中GitReps中生成一個.git的隐藏目錄
注意事項:這個本地庫中的.git目錄不要随意删除或者修改,容易出問題。
添加檔案: 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才能進行管理。
git status看的是工作區和暫存區的狀态
把Demo2.txt送出至暫存區
檢視狀态:
再次把暫存區中的檔案送出至本地庫中
修改Demo2.txt中的内容
使用git add再次送出檔案到暫存區中
使用git commit送出至本地庫
檢視狀态
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指針回到指定曆史版本需要走的步數。
reset指令:前進或者後退曆史版本
複制:在終端中選中就是複制了
粘貼: 右鍵:paste
【reset參數】
1、【hard】git reset --hard
特點:當本地庫中的指針發生偏移的時候,那麼暫存區會重置,而且工作區也會重置。
2、【mixed】git reset --mixed
特點:當本地庫中的指針發生偏移的時候,那麼暫存區會重置,而工作區不動。
3、【soft】git reset --soft
特點:當本地庫中的指針發生偏移的時候,暫存區和工作區都不動。
【結論】我們工作的時候,--hard用的最多。
【1】建立一個檔案Test.txt
【2】使用add添加到暫存區
【3】使用commit送出到本地庫
【4】删除工作區的檔案
【5】同步工作區和暫存區的狀态
【6】檢視日志
【7】找回本地庫中删除的檔案:實際上就是把指針指到添加的那個曆史版本就可以了。
【1】删除工作區的檔案
【2】同步暫存區的檔案
使用add添加到暫存區
【3】後悔了:實際上就是把指針指到添加的那個曆史版本就可以了。
【1】先建立一個檔案,添加到暫存區,再送出到本地庫:
【2】更改工作區中Test3.txt中内容,增加内容:
導緻:工作區 和 暫存區 不一緻,比對:
總結: git diff [檔案名] ---》 将工作區中的檔案和暫存區中檔案進行比較
多個檔案的比對:
總結:git diff --->比較工作區中和暫存區中 所有檔案的差異
比較暫存區和本地庫中差别:
git diff [曆史版本][檔案名] ---》比較暫存區和本地庫中内容
【1】什麼是分支:
在版本控制過程中,使用多條線同時推進多個任務。這裡面說的多條線,就是多個分支。
【2】通過一張圖展示分支:
【3】分支的好處:
同時多個分支可以并行開發,互相不耽誤,互相不影響,提高開發效率
如果有一個分支功能開發失敗,直接删除這個分支就可以了,不會對其他分支産生任何影響。
1)檢視、建立、切換分支
【1】在工作區建立一個Test4.txt檔案,然後送出到暫存區,送出到本地庫:
【2】檢視分支:
【3】建立分支,再檢視:
【4】切換分支再檢視:
2)沖突問題--如何解決沖突問題
【1】進入branch01分支,增加内容:
【2】将分支切換到master:
然後在主分支下 加入内容:
【3】再次切換到branch01分支檢視:
【4】将branch01分支 合并到 主分支 :
(1)進入主分支:
(2)将branch01中的内容和主分支内容進行合并:
檢視檔案:出現沖突:
解決:
公司内部商議解決,或者自己決定 人為決定,留下想要的即可:
将工作區中内容添加到暫存區:
然後進行commit操作:
官網:https://github.com/
新增賬號
當你建立resp庫的時候會讓你驗證一封郵件,進入你自己的郵箱,點一下就ok!
修改頭像
下一步自己嘗試做一下。
本地庫和遠端庫的互動方式
【1】建立本地庫
mkdir GitResp2
【2】初始化本地庫
【3】建立一個檔案Demo.txt
【4】送出至暫存區和本地庫
【1】new respository
【2】進入遠端庫建立頁
遠端庫位址:https://github.com/jason1983-git/GitResp2.git
遠端庫的位址:
點選進入:
遠端庫位址比較長,每次複制比較麻煩
https://github.com/jason1983-git/GitResp2.git
在Git本地将位址儲存,通過别名
檢視别名:
起别名:
推送成功以後,檢視自己的遠端庫:
遠端庫位址複制:
克隆操作:
克隆操作可以幫我們完成:
(1)初始化本地庫
(2)将遠端庫内容完整的克隆到本地
(3)替我們建立遠端庫的别名:
【1】更新本地庫資訊:
【2】push内容到遠端庫中去:
發現可以直接push進去,并沒有讓我錄入賬号密碼,或者也沒有提示錯誤 - --》結果 很詭異
原因:git在本地會有緩存
清除本地緩存
現在再次重新push,發現出錯了:
必須要加入團隊:
登入項目經理的賬号,邀請普通成員:
登入被邀請者的賬号,接收邀請:(在位址欄錄入邀請連結即可: )
使用項目經理的賬号檢視遠端庫的狀态
【1】拉取操作 pull操作,相當于 fetch+merge
【2】項目經理先确認遠端庫内容是否更新了:
【3】項目經理進行拉取:
(1)先是抓取操作:fetch:
在抓取操作執行後,隻是将遠端庫的内容下載下傳到本地,但是工作區中的檔案并沒有更新。工作區中還是原先的内容:
抓取後可以去遠端庫看看内容是否正确:
然後發現内容都正确,就可以進行合并操作了:
合并之前應該将分支切換回來:
(2)進行合并:merge:
--------------------------------------------------------------------------------------------------------------------------------
遠端庫的拉取可以直接利用pull指令來完成:
fetch+merge操作:---》為了保險期間,慎重
pull --->代碼簡單,比較省事
未完待續,敬請期待... ...
轉載-------------------------------------------------------