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