Git全套教程一套精通git.跟學(xué)黑馬筆記
1.版本管理工具概念
我在大學(xué)畢業(yè)寫論文的時候的時候碰到過如下的現(xiàn)象
<<畢業(yè)論文第一版.doc>>
<<畢業(yè)論文第二版.doc>>
<<畢業(yè)論文第三版.doc>>
<<畢業(yè)論文最終版.doc>>
<<畢業(yè)論文最終版2.doc>>
類似的問題我曾經(jīng)也碰到過很多,例如:
領(lǐng)導(dǎo)讓寫文檔,寫好了,領(lǐng)導(dǎo)讓修改,改好了,領(lǐng)導(dǎo)覺得第一版不錯,改回來吧,此時內(nèi)心一臉懵,第一版長啥樣沒存檔啊
實際上,代碼開發(fā)中也需要這樣的軟件來管理我們的代碼. 例如我們經(jīng)常會碰到如下的現(xiàn)象:
改之前好好的,改完就報錯了,也沒怎么修改啊
在這種情況下如果不能查看修改之前的代碼,查找問題是非常困難的.
如果有一個軟件能記錄我們對文檔的所有修改,所有版本,那么上面的問題講迎刃而解.而這類軟件我們一般叫做版本控制工具
版本管理工具一般具有如下特性:
1) 能夠記錄歷史版本,回退歷史版本
2) 團隊開發(fā),方便代碼合并
2. 版本管理工具介紹
現(xiàn)在比較流行的版本管理工具是git ,但是實際上git 是近幾年才發(fā)展起來的,可能有一些老的項目,還在用一些老的軟件,比如svn
2.1版本管理發(fā)展簡史(維基百科)
2.1.1 SVN(SubVersion)
工作流程
SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務(wù)器的.
工作流程如下:
1.從中央服務(wù)器遠程倉庫下載代碼
2.修改后將代碼提交到中央服務(wù)器遠程倉庫
優(yōu)缺點:
優(yōu)點: 簡單,易操作
缺點:所有代碼必須放在中央服務(wù)器
1.服務(wù)器一旦宕機無法提交代碼,即容錯性較差
2.離線無法提交代碼,無法及時記錄我們的提交行為
svn流程圖
2.1.2 Git
工作流程
Git是分布式版本控制系統(tǒng)(Distributed Version Control System,簡稱 DVCS),分為兩種類型的倉庫:
本地倉庫和遠程倉庫
工作流程如下
1.從遠程倉庫中克隆或拉取代碼到本地倉庫(clone/pull)
2.從本地進行代碼修改
3.在提交前先將代碼提交到暫存區(qū)
4.提交到本地倉庫。本地倉庫中保存修改的各個歷史版本
5.修改完成后,需要和團隊成員共享代碼時,將代碼push到遠程倉庫
總結(jié):git和svn的區(qū)別
1. svn 是集中式版本控制工具,git 是分布式版本控制工具
2. svn 不支持離線提交,git 支持離線提交代碼
3. Git 發(fā)展簡史
林納斯·本納第克特·托瓦茲(Linus Benedict Torvalds, 1969年~ )
很多人都知道,Linus在1991年創(chuàng)建了開源的Linux,從此,Linux系統(tǒng)不斷發(fā)展,已經(jīng)成為最大的服務(wù)器系統(tǒng)軟件了。
Linus雖然創(chuàng)建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢?
事實是,在2002年以前,世界各地的志愿者把源代碼文件通過diff的方式發(fā)給Linus,然后由Linus本人通過手工方式合并代碼!
你也許會想,為什么Linus不把Linux代碼放到版本控制系統(tǒng)里呢?那個年代不是有CVS、SVN這些免費的版本控制系統(tǒng)嗎?因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統(tǒng)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。有一些商用的版本控制系統(tǒng),雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。
不過,到了2002年,Linux系統(tǒng)已經(jīng)發(fā)展了十年了,代碼庫之大讓Linus很難繼續(xù)通過手工方式管理了,社區(qū)的弟兄們也對這種方式表達了強烈不滿,于是Linus選擇了一個商業(yè)的版本控制系統(tǒng)BitKeeper,BitKeeper的東家BitMover公司出于人道主義精神,授權(quán)Linux社區(qū)免費使用這個版本控制系統(tǒng)。而授權(quán)的前提是:Linux 社區(qū)的人不能開發(fā)具有相同功能的競爭產(chǎn)品!
另一方面,BitKeeper不是開源的. 顯然與Linux 的開源精神不相符,所以linux 社區(qū)的很多人抱怨,不愿意使用.
典型的就是 Andrew Tridgell (Samba 開發(fā)服務(wù)的創(chuàng)造者) 非常不滿.偷偷違反了和 BitKeeper 的協(xié)議,反編譯 BitKeeper 的源代碼,開發(fā)了個爬蟲,然后爬取信息被人發(fā)現(xiàn)了. BitKeeper 公司的領(lǐng)導(dǎo)非常不滿意,然后開始發(fā)布消息說,(下個版本)不再為Linux 提供免費的服務(wù).
Linus 本人就出面協(xié)調(diào)(幾周或者幾個月),但是不管用, 沒辦法. 估計談判的過程感覺到了憋屈–“吃人嘴短,拿人手軟”
Linus 本人 花了10天的時間Git 出來了,一個月之內(nèi),Linux系統(tǒng)的源碼已經(jīng)由Git管理了!
Git 出來以后畢竟是一個人做的,開始并不好用(剛開始只能用勉強可以用來形容), 還是很多人抱怨,發(fā)展了很多年都沒有干過其他軟件.
直到 2008年,GitHub網(wǎng)站上線了,它為開源項目免費提供Git存儲,無數(shù)開源項目開始遷移至GitHub,從此git 迎來了飛速發(fā)展,當下git 已經(jīng)成為了最流行的版本控制工具
4. Git 的安裝
4.1 git 的下載
下載地址: https://git-scm.com/download
附件
4.2 安裝
-
按照附件的 順序直接下一步傻瓜式安裝即可
-
其中安裝的過程中需要填寫一個郵箱和用戶名(任意即可)
-
注意 : 安裝完畢請重啟資源管理器 , 或者重啟電腦 ! ! ! \color{red}{注意: 安裝完畢請重啟資源管理器,或者重啟電腦!!!} 注意:安裝完畢請重啟資源管理器,或者重啟電腦!!!
-
更改語言
4.3 基本配置
- 1.打開Git Bash
- 設(shè)置用戶信息
- git config --global user.name"Derrick"
- git config --global user.email"Derrick@qq.com"
- 查看配置信息
- git config --global user.name
- git config --global user.email
4.4 為常用指令配置別名(可選)
有些常用的指令參數(shù)非常多,每次都要輸入好多參數(shù)
- 1.打開用戶目錄,創(chuàng)建.bashrc文件
如果上面的指令不行的話,可以嘗試
touch ~/.bashrc
- 2.在.bashrc文件中輸入如下內(nèi)容
#用于輸出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于輸出當前目錄所有文件以及基本信息
alias ll='ls -al'
- 3.打開GitBash,執(zhí)行source ~/.bashrc
4.5 解決GitBash亂碼問題
- 1.打開GitBash執(zhí)行如下命令
git config --global core.quotepath false
2.在git安裝目錄/etc/bash.bashrc 文件最后加入下面兩行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
5. Git 工作流程
5.1 Git 初始化
我們先初始化一個本地倉
1) 新建測試文件夾
2) 進入文件夾,然后右鍵創(chuàng)建版本庫
此時 我們看到
1) 文件夾上多了一個綠色圖標(如果沒有請看本章節(jié) 5.3小節(jié)說明)
2) 文件夾內(nèi)部生成了一個.git 隱藏文件夾(需要設(shè)置隱藏文件夾可見)
5.2 git 流程
5.2.1 流程圖
5.2.2概念即詳解
本地倉庫:是在開發(fā)人員自己電腦上的Git倉庫,存放我們的代碼(.git 隱藏文件夾就是我們的本地倉庫)
遠程倉庫:是在遠程服務(wù)器上的Git倉庫,存放代碼(可以是github.com或者gitee.com 上的倉庫,或者自己該公司的服務(wù)器)
工作區(qū): 我們自己寫代碼(文檔)的地方
暫存區(qū): 在 本地倉庫中的一個特殊的文件(index) 叫做暫存區(qū),臨時存儲我們即將要提交的文件
------------
Clone:克隆,就是將遠程倉庫復(fù)制到本地倉庫
Push:推送,就是將本地倉庫代碼上傳到遠程倉庫
Pull:拉取,就是將遠程倉庫代碼下載到本地倉庫,并將代碼 克隆到本地工作區(qū)
6.Git 的基本使用01-TortoiseGit 操作本地倉庫
6.1 初始化倉庫
方法一:
新建一個文件夾,進入文件夾內(nèi)部操作
1)右鍵--> 在這里創(chuàng)建Git 版本庫
注意: 不要直接在桌面上操作,否則桌面就是一個倉庫
方法二:
2) 右鍵-->Git GUI here
方法三: 命令行模式
2) git init
創(chuàng)建完畢倉庫,我們發(fā)現(xiàn),此時我們創(chuàng)建的文件夾下有一個.git 文件已經(jīng)生成了
并且倉庫文件夾上多了一個 綠色圖標
6.2 添加文件
1)在倉庫中新建一個文件
2)選中新建的文件-->右鍵--> TortoiseGit--> 添加
3)此時我們看到文件夾上多了一個 "加號"
6.3 提交文件至本地倉庫
1)選中文件
2) 右鍵--git提交
6.4 修改文件,與再次提交文件
當我們修改文件以后,文件上多了一個紅色感嘆號,表示我們上次提交后該文件被修改過
提交后文件圖標又變成綠色
6.5 文件狀態(tài)講解
Git工作目錄下的文件存在兩種狀態(tài):
1 untracked 未跟蹤(未被納入版本控制) : 比如新建的文件(此時文件夾上沒有圖標或者有一個"問號")
2 tracked 已跟蹤(被納入版本控制)
2.1 Staged 已暫存狀態(tài) : 添加 但未提交狀態(tài)(此時文件夾上有一個"加號")
2.2 Unmodified 未修改狀態(tài) : 已提交(此時文件夾上有一個"對號")
2.3 Modified 已修改狀態(tài) : 修改了,但是還沒有提交 (此時文件夾上有一個"紅色感嘆號")
這些文件的狀態(tài)會隨著我們執(zhí)行Git的命令發(fā)生變化
6.6 修改文件,不提交和上一個版本比較差異(diff)
修改文件,此時不要提交
選中文件-->右鍵--> TortoiseGit--> 比較差異
6.7 查看提交歷史記錄
選中文件
右鍵--> TortoiseGit--> 顯示日志
此時我們可以看到所有的歷史提交記錄
##6.8 回退至歷史版本
右鍵--> TortoiseGit--> 顯示日志
選中某個版本--> 進行如下操作
6.9 文件刪除
###6.9.1本地刪除與恢復(fù)
1) 直接選中文件刪除的話,其實只是刪除了本地工作區(qū)的文件,并沒有刪除 倉庫中的文件
此時時可以回退的, 比如我們進行如下操作
1)文件刪除
2)右鍵--> TortoiseGit--> 還原
此時我們發(fā)現(xiàn)文件又被恢復(fù)了
6.9.2從版本庫刪除
2) 我們?nèi)绻娴南胍獙⒛硞€文件從服務(wù)器刪除,需要進行如下操作
1) 刪除文件,和上面的操作一樣
2) 提交,此時服務(wù)文件已經(jīng)刪除了(歷史版本還在,還是可以恢復(fù))
6.9.3從版本庫刪除,但是不刪除本地
我們可以如下操作,只刪除服務(wù)器上的文件,但是本地文件并不刪除
備注: 刪除之后需要提交,才會真正的從服務(wù)器刪除
6.10 忽略提交
有時候我們一些文件是不需要提交的比如說idea/eclipse 開發(fā)的代碼自動生成的配置文件
如何配置不提交呢
此時我們的根目錄下會生成一個.gitignore 文件
忽略文件如何閱讀,常見格式
# 所有以.a 結(jié)尾的文件講被忽略(遞歸)
*.a
# 不管其他規(guī)則怎樣,強制不忽略 lib.a
!lib.a
# 只忽略 文件 TODO (注意這里是文件)
/TODO
# 忽略 build文件夾下所有內(nèi)容(遞歸) 這里是文件夾
build/
# 忽略 doc 目錄下以 *.txt 結(jié)尾的文件 (不遞歸)
doc/*.txt
# 忽略 doc 目錄下以 *.pdf 結(jié)尾的文件 (遞歸)
doc/**/*.pdf
當然理解了上述規(guī)則,我們也可以手動編輯該文件,而不用通過窗口化操作(如果不嫌麻煩)
7. Git 的基本使用02-TortoiseGit 操作本地倉庫(分支)
7.1 分支的概念
幾乎所有的版本控制系統(tǒng)都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發(fā)主線上分離開來,避免影響開發(fā)主線。多線程開發(fā),可以同時開啟多個任務(wù)的開發(fā),多個任務(wù)之間互不影響.
7.2 為何要使用分支
先看單線程開發(fā)
思考如下現(xiàn)象
10.1 日 業(yè)務(wù)部門提出需求 : 明年 元旦3天做2個促銷活動
1) 12.31 號上線活動1,
2) 1.4 號上線活動2 ,同時 要求撤銷 活動1
你所在 部門領(lǐng)導(dǎo) 為了保證能順利完成,要求 11.15 號完成 上述連個功能的開發(fā)工作
此時作為開發(fā)人員:我要面臨兩個文件, 活動1 的代碼,即要存在(12.31 要用)又要不存在(1.4 號要求刪除) ,我們怎么做?
顯然比較棘手,如果使用分支(可以理解為將代碼復(fù)制一份)將很好解決
7.3 創(chuàng)建分支
到現(xiàn)在為止,我們一直使用的時主分支(master)
在主分支上操作創(chuàng)建分支
7.4 分支的查看切換
7.4.1查看分支
查看版本分支圖,此時我們看到有兩個分支
當然,我們可以創(chuàng)建多個分支
可以看到多個分支的圖形
7.4.2切換分支
右鍵--> 檢出
##7.5 分支的合并與刪除
7.5.1合并
我們將代碼切換到分支1,然后寫屬于需求1 的代碼并提交
當我們把需求1 開發(fā)完畢如何把需求1 的代碼合并到主分支呢?
-->1 切換到 主版本
-->2 右鍵 合并即可將需求1 寫的代碼合并至主分支
-----此時我們看到代碼自動合并到了master分支
7.5.2刪除分支
5,沖突的處理
? 5.1)沖突的概念
現(xiàn)象演示
開發(fā)人員A 開發(fā)需求1,開發(fā)了一個工具類 MathUtil,里面第一行寫了一個方法 add(int [] args)
同時開發(fā)人員B 開發(fā)需求2,開發(fā)了一個工具類 MathUtil,里面第一行寫了一個方法 add(int a int b)
他們在互相不知道對方需求的情況下同時提交了代碼到自己的分支
思考此時如果我們把需求1 和需求2 同時都合并到主分支上, 主分支的 工具類 MathUtil 的第一行應(yīng)該使用誰的代碼?
此時主分支是不能智能判斷第一行使用誰的代碼,合并時會報錯,我們叫做沖突.
? 5.2) 如何處理沖突
分析一下沖突的原因:
開發(fā)人員之間彼此沒有溝通導(dǎo)致的同一個時間節(jié)點修改了同一個地方的代碼,合并是沖突
思考:
我們能直接把某個開發(fā)人員開發(fā)的代碼刪除嗎?
顯然不能
所以在處理沖突時,第一步應(yīng)該時找開發(fā)另一個需求的人員溝通,之后才是處理沖突
-----
--> 選中沖突的文件(帶黃色感嘆號的文件都是沖突的文件,如果有多個需要逐一處理)
--> 右鍵--> 編輯沖突,
-->處理完畢后.標記已解決
8.tag 標簽
8.1 標簽的概念
如果你的項目達到一個重要的階段,并希望永遠記住那個特別的提交快照,你可以給它打上標簽(tag)
比如說,我們想為我們的項目發(fā)布一個"1.0"版本。 我們給最新一次提交打上(HEAD)"v1.0"的標簽。
標簽可以理解為項目里程碑的一個標記,一旦打上了這個標記則,表示當前的代碼將不允許提交
8.2 標簽的創(chuàng)建(tag)
標簽的創(chuàng)建和分支的創(chuàng)建操作幾乎一樣
8.3 標簽的切換與刪除
9. 遠程倉庫
我們的代碼不能總是放在本地,因為總是放在本地,一旦電腦出現(xiàn)故障,數(shù)據(jù)將丟失,怎么共享呢,這里我們需要一個服務(wù)器, 我們可以把代碼放到服務(wù)器上,然后讓別人下載,這樣我峨嵋你既可以備份代碼,也可以進行團隊協(xié)作開發(fā)
9.0 局域網(wǎng)倉庫
實際上我們可以搭建一個單間的局域網(wǎng)服務(wù)器共享我們的代碼
9.0.1本地相對路徑,多個文件夾之間共享代碼
9.0.2開啟局域網(wǎng)共享代碼
局域網(wǎng)這種共享是沒有安全控制的,都可以訪問,如果想要搭建一個可以控制權(quán)限的服務(wù)器需要借助第三方軟件
gitblit,可以自行搜索搭建
9.1 常用遠程倉庫托管服務(wù)
除了自己搭建服務(wù)器,其實我們可以使用一些免費的遠程倉庫,遠程倉庫有很多,常見的免費互聯(lián)網(wǎng)遠程倉庫托管服務(wù)如下:
www.github.com
www.gitee.com
www.gitlab.com
github 是一個基于git實現(xiàn)在線代碼托管的倉庫,向互聯(lián)網(wǎng)開放,企業(yè)版要收錢。
gitee 即碼云,是 oschina 免費給企業(yè)用的,不用自己搭建環(huán)境。
gitlab 類似 github,一般用于在企業(yè)內(nèi)搭建git私服,要自己搭環(huán)境。
GitHub(gitee)、GitLab 不同點:
1、GitHub如果使用私有倉庫是需要付費的,(2019年開始私有倉庫也是免費的但是只能3個人協(xié)同開發(fā),想要更多需要收費),GitLab可以在上面搭建私人的免費倉庫。
2、GitLab讓開發(fā)團隊對他們的代碼倉庫擁有更多的控制,相對于GitHub,它有不少的特色:
(1)允許免費設(shè)置倉庫權(quán)限
(2)允許用戶選擇分享一個project的部分代碼
(3)允許用戶設(shè)置project的獲取權(quán)限,進一步提升安全性
(4)可以設(shè)置獲取到團隊整體的改進進度
(5)通過innersourcing讓不在權(quán)限范圍內(nèi)的人訪問不到該資源
鑒于國內(nèi)用戶可能網(wǎng)絡(luò)不好,這里我們使用gitee(碼云) 來講解我們的課程,其他可自行找資料學(xué)習(xí)非常類似
9.2 碼云賬號注冊
填寫郵箱發(fā)送驗證碼,然后可以注冊賬號,主頁如下
9.3 創(chuàng)建遠程倉庫
各個類型倉庫之間的區(qū)別
9.4 把本地代碼推送到遠端
此時我們刷新倉庫發(fā)現(xiàn)代碼已經(jīng)存在了
我們填寫的用戶信息,會被保存在本地,下次提交無需填寫用戶名和密碼
9.5 從遠程倉庫克隆代碼
我們同樣可以從庫下載代碼,
新建一個文件夾 repo2 ,進入然后進行如下操作
此時我們發(fā)現(xiàn)我們的代碼已經(jīng)被下載下來了
9.6 代碼的修改與提交,查看歷史
1)此時我們修改代碼就不能僅僅是提交到本地了,提交完畢應(yīng)該推送到遠端服務(wù)器
2)此時如果別人從遠端倉庫下載最新的代碼其實是可以看到我們的代碼修改記錄的
git -->顯示日志
9.7 ssh 連接概述
實際上git 不僅僅支持用戶名密碼方式的配置,可以有另外一種相對更加安全的配置即ssh 方式配置
ssh 方式的底層原理
ssh連接地城是RAS加密算法,又稱非對稱加密,是一種現(xiàn)在公認的最安全的加密方式
數(shù)學(xué)基礎(chǔ)好的同學(xué)可以研究一下
https://www.cnblogs.com/cjm123/p/8243424.html
公鑰私鑰加密可以看作古代 的"虎符" , 我們本地電腦有一份,遠程服務(wù)器有一份, 只要 "虎符" 核對通過 表示身份無誤,可以執(zhí)行提交等操作,無需輸入用戶名密碼
9.8 ssh 密鑰的生成
#生成公鑰私鑰
ssh-keygen -t rsa
一直回車即可
會默認用戶目錄 .ssh 目錄生成一個默認的id_rsa文件 和id_rsa.pub
9.9 ssh 密鑰配置
9.10 ssh 方式克隆/提交代碼:
配置完成之后我們克隆我們之前的項目
修改后直接提交推送即可成功,git 會自動去.ssh 目錄找我們的私鑰進行匹配
9.11. 遠程倉庫的其他操作
概念
當我們從 gitee 上查看別人的項目的時候我們可能會看到上圖中的按鈕
指數(shù):
是gitee 網(wǎng)站根據(jù)當前項目的各項指標計算出來的一個值
Star:
點贊, 注意這里的并不像朋友圈那樣容易獲得點贊,圈內(nèi)人還是很克制的
Watch:
如果你watch 了某個開源項目,那么這個項目后續(xù)所有的改動你將收到通知
Fork :
將別人的代碼克隆到你自己的倉庫
作用一: 如果擔心某個優(yōu)秀的項目別人突然有一天不開源了,你可以fork到自己的倉庫
作用二: 修改別人的代碼
以linux 為例,你其實不是linux 社區(qū)的開發(fā)人員,但是你 又想為linux 開發(fā)做貢獻(維護代碼)
你并沒有權(quán)限,怎們辦?
你可以先把linux 開源的代碼 fork 到你自己的倉庫,此時你就可以操作自己的倉庫進行修改代碼了
如何讓別人合并你修改好的代碼呢?
我們注意項目的上方有一個 " Pull Request" 這個按鈕的意思是 "請求求別人合并你修改的代碼"
當我們發(fā)起一個 Pull Request 時 , 項目的擁有者將收到 Pull Request請求,然后將根據(jù)你提交代碼的質(zhì)量決定是否合并
項目操作
1)我們可以刪除修改我們自己倉庫的基本信息
- 我們可以邀請其他人成為項目的開發(fā)人員或者管理人員
我們可以刪除修改我們自己倉庫的基本信息
9.12 利用 gitee 搭建個人主頁
1)將靜態(tài)資源上傳至倉庫
2) 選擇服務(wù) pages 即可部署
注意 1)必須有個index.html 文件
注意 2) 只能搭建靜態(tài)網(wǎng)站,動態(tài)網(wǎng)站請租賃服務(wù)器搭建提供服務(wù)
注意 3) gitee 要求必須綁定手機號
點擊開啟后gitee 會自動生成一個域名
直接訪問即可
此時我們已經(jīng)在git 上部署了一個靜態(tài)的網(wǎng)站
10.命令行-- git基本操作
10.1 介紹
? 上述我們的操作 使用的 是客戶端TortoiseGit 操作的git ,實際上底層依舊是使用的命令行幫我們執(zhí)行, 在早期 git 并沒有窗口化工具,開發(fā)人員只能使用命令行模式
實際上,如果你掌握并熟練使用了命令行模式操作git 的話,你會發(fā)現(xiàn)某些操作命令行比窗口化操作要簡單
所有你在工作中會發(fā)現(xiàn)高深的技術(shù)人員可能會喜歡命令行模式提交git
##10.2 環(huán)境配置
當安裝Git后首先要做的事情是設(shè)置用戶名稱和email地址。這是非常重要的,因為每次Git提交都會使用該用戶信息
#設(shè)置用戶信息
git config --global user.name “itcast”
git config --global user.email “itcast@itcast.cn”
#查看配置信息
git config --list
git config user.name
#通過上面的命令設(shè)置的信息會保存在~/.gitconfig文件中
##10.3 初始化本地倉庫 init
# 初始化倉庫帶工作區(qū)
git init
# 初始化倉庫不帶工作區(qū)
git init --bare
##10.4 克隆 clone
# 從遠程倉庫克隆
git clone 遠程Git倉庫地址
例如: git clone https://gitee.com/itcast/gittest.git
##10.5 查看狀態(tài) status
# 查看狀態(tài)
git status
#查看狀態(tài) 使輸出信息更加簡潔
git status –s
##10.6 add
# 將未跟蹤的文件加入暫存區(qū)
git add <文件名>
# 將暫存區(qū)的文件取消暫存 (取消 add )
git reset <文件名>
##10.7 commit
# git commit 將暫存區(qū)的文件修改提交到本地倉庫
git commit -m "日志信息" <文件名>
##10.8 刪除 rm
# 從本地工作區(qū) 刪除文件
git rm <文件名>
# 如果本工作區(qū)庫誤刪, 想要回退
git checkout head <文件名>
11. 命令行–git 遠程倉庫操作
11.1 查看遠程
# 查看遠程 列出指定的每一個遠程服務(wù)器的簡寫
git remote
# 查看遠程 , 列出 簡稱和地址
git remote -v
# 查看遠程倉庫詳細地址
git remote show <倉庫簡稱>
11.2 添加/移除遠測倉庫
# 添加遠程倉庫
git remote add <shortname> <url>
# 移除遠程倉庫和本地倉庫的關(guān)系(只是從本地移除遠程倉庫的關(guān)聯(lián)關(guān)系,并不會真正影響到遠程倉庫)
git remote rm <shortname>
11.3 從遠程倉庫獲取代碼
# 從遠程倉庫克隆
git clone <url>
# 從遠程倉庫拉取 (拉取到.git 目錄,不會合并到工作區(qū),工作區(qū)發(fā)生變化)
git fetch <shortname> <分支名稱>
# 手動合并 把某個版本的某個分支合并到當前工作區(qū)
git merge <shortname>/<分支名稱>
# 從遠程倉庫拉取 (拉取到.git 目錄,合并到工作區(qū),工作區(qū)不發(fā)生變化) = fetch+merge
git pull <shortname> <分支名稱>
git pull <shortname> <分支名稱> --allow-unrelated-histories # 強制拉取合并
注意:如果當前本地倉庫不是從遠程倉庫克隆,而是本地創(chuàng)建的倉庫,并且倉庫中存在文件,此時再從遠程倉庫拉取文件的時候會報錯(fatal: refusing to merge unrelated histories ),解決此問題可以在git pull命令后加入?yún)?shù)–allow-unrelated-histories (如上 命令)文章來源:http://www.zghlxwxcb.cn/news/detail-843497.html
# 將本地倉庫推送至遠程倉庫的某個分支
git push [remote-name] [branch-name]
12. 命令行-- 分支
# 默認 分支名稱為 master
# 列出所有本地分支
git branch
# 列出所有遠程分支
git branch -r
# 列出所有本地分支和遠程分支
git branch -a
# 創(chuàng)建分支
git branch <分支名>
# 切換分支
git checkout <分支名>
# 刪除分支(如果分支已經(jīng)修改過,則不允許刪除)
git branch -d <分支名>
# 強制刪除分支
git branch -D <分支名>
# 提交分支至遠程倉庫
git push <倉庫簡稱> <分支名稱>
# 合并分支 將其他分支合并至當前工作區(qū)
git merge <分支名稱>
# 刪除遠程倉庫分支
git push origin –d branchName
13 . 命令行 --tag
# 列出所有tag
git tag
# 查看tag詳細信息
git show [tagName]
# 新建一個tag
git tag [tagName]
# 提交指定tag
$ git push [倉庫簡稱] [tagName]
# 新建一個分支,指向某個tag
$ git checkout -b [branch] [tag]
# 刪除本地tag
$ git tag -d [tag]
# 刪除遠程tag (注意 空格)
$ git push origin :refs/tags/[tag]
14. 案例
企業(yè)中我們是如何開發(fā)的
1) 入職第一天,管理人員分配/git賬號密碼
2) 開發(fā)人員下載代碼即文檔/ 根據(jù)文檔將環(huán)境搭建成功
3) 團隊一般會給你講講項目相關(guān)的支持
----
4) 你接到第一個需求(或者某個功能,一般要經(jīng)過溝通,分析,設(shè)計...等過程)
5) 創(chuàng)建feature分支(一般一個需求對應(yīng)一個feature,命名格式上標注該需求的id)
6) 開發(fā)需求,本地測試,提交代碼到當前需求對應(yīng)的feature分支,
一般來講為了避免將測試代碼提交,需要提交前,檢查如下步驟
6.1) 是否多提交了某個文件,比如測試文件
6.2) 是否漏提交文件
6.3) 打開每一個應(yīng)該提交的文件,判斷是否多提交了一行代碼,是否少提交了一行代碼,是否刪除了本應(yīng)該存在的代碼
檢查完畢提交代碼
7) 合并分支至test分支-- 測試人員會在test分支中測試
8) 測試人員測試bug ,開發(fā)者在feature分支上繼續(xù)修改,提交
9) 測試人員測試通過 ,test分支會被測試人員合并到develop開發(fā)分支,再次測試
10)develop分支最終會被合并到master主分支
`文章來源地址http://www.zghlxwxcb.cn/news/detail-843497.html
到了這里,關(guān)于Git全套教程一套精通git.跟學(xué)黑馬筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!