文章目錄
- 一. Git概述
-
- 1.1 什麼是版本控制
- 1.2 為什麼需要版本控制
- 1.3 版本控制工具
- 1.4 Git原理
- 1.5 Git代碼托管中心
- 二. Git安裝
-
- 2.1 官網位址
- 2.2 安裝流程
- 三. Git常用指令
-
- 3.1 設定使用者簽名
- 3.2 初始化本地庫
- 3.3 檢視本地庫狀态
- 3.4 工作區檔案添加到暫存區
- 3.5 暫存區檔案送出到本地庫
- 3.6 修改檔案内容
- 3.7 檢視曆史版本
- 3.8 版本穿梭
- 四. Git分支操作
-
- 4.1 簡介
- 4.2 分支優點
- 4.3 分支的操作
- 4.4 檢視分支
- 4.5 建立分支
- 4.6 切換分支
- 4.7 修改分支
- 4.8 合并分支
- 五. Git團隊協作機制
-
- 5.1 團隊内協作
- 5.2 團隊外協作
- 六. GitHub操作
-
- 6.1 簡介
- 6.2 GitHub操作之上傳本地庫
- 6.3 GitHub操作之拉取遠端庫到本地庫
- 6.7 GitHub操作之克隆遠端倉庫到本地
- 七. Idea內建Git
-
- 7.1 配置Git忽略檔案
- 7.2 idea中使用git
- 7.3 idea中內建Github
- 7.4 idea其它操作
- 八. 國内代碼托管中心碼雲(gitee)
-
- 8.1 簡介
- 8.2 碼雲上建立遠端庫
- 8.3 Idea內建gitee碼雲
- 8.4 碼雲複制github項目
一. Git概述
git是一個免費的、開源的分布式版本控制系統,可以快速高效地處理從小型到大型的各種項目。Git易于學習,占地面積小,性能極快。它具有廉價的本地庫,友善的暫存區域和多個工作流分支。其性能優于Subversion、CVS、Perforce和ClearCase等版本控制工具。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzYjMlhzMlJzNlZDOwYmZ4YmMkRjZykjN2gjMjZ2NxI2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1.1 什麼是版本控制
版本控制是一種記錄檔案内容變化,以便将來查閱特定版本修訂情況的系統,版本控制最重要的是可以記錄檔案修改曆史記錄,進而讓使用者能夠檢視曆史版本,友善版本切換。
1.2 為什麼需要版本控制
能夠使個人開發過渡到團隊協作
1.3 版本控制工具
- 集中式版本控制工具
CVS、SVN、VSS等都是集中化的版本控制系統,都有一個單一的集中管理的伺服器,儲存所有的檔案修訂版本,而協同工作的人們都可以通過用戶端連接配接到這台伺服器(團隊員工要修改檔案隻能連接配接伺服器,在伺服器上面修改),取出最新的檔案或者送出更新。這種做法帶了許多好處,每個人都可以在一定程度上看到項目中的其他人正在做些什麼。而管理者也可以輕松地掌握每個開發者的權限,并且管理一個集中化的版本控制系統,要遠比在各個用戶端上維護本地資料庫來得輕松容易。但問題也顯而易見,這麼做容易引發中央伺服器的單點故障。
2. 分布式版本控制
像Git這種分布式版本控制工具,用戶端提取的不是最新版本的檔案快照,而是把代碼倉庫完整地鏡像下來(本地庫),這樣任何一處協同工作用的檔案發生故障,事後都可以用其他用戶端的本地倉庫進行恢複。因為每個用戶端的每一次檔案提取操作,實際上都是一次對整個檔案倉庫的完整備份。分布式版本控制的出現,解決了集中式版本控制系統的缺陷
- 伺服器斷網的情況下也可以進行開發(因為版本控制上在本地進行的)
- 每個用戶端儲存的也都是整個完整的項目(包含曆史記錄,更加安全)
1.4 Git原理
如下圖,紅色的框是我們的工作區,也就是代碼在我們本地所在的磁盤位置,通過git add指令可以将我們的代碼放入本地的暫存區,暫存區用來臨時儲存我們的代碼。然後使用git commit指令将我們暫存區的代碼送出到本地版本倉庫,此時代碼就在git的本地參考完成了更新,通過push指令可以将我們本地的版本推送到遠端的版本控制庫。
1.5 Git代碼托管中心
代碼托管中心是基于遠端伺服器的遠端代碼倉庫,一般我們簡單稱為遠端庫
區域網路代碼托管中心:
GitLab
網際網路代碼托管中心:
GitHub(外網)
Gitee(國内)
二. Git安裝
2.1 官網位址
GIt官網位址
2.2 安裝流程
在GIt官網首頁點選Download,選擇與我們本地參數适配的版本下載下傳即可,我這裡示範mac的安裝流程
- 輸入brew install git指令開始安裝
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee) - 檢視git版本
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee)
三. Git常用指令
指令名稱 | 作用 |
---|---|
git config --global user.name | 設定使用者簽名 |
git config --global user.email | 設定使用者簽名 |
git init | 初始化本地倉庫 |
git status | 檢視本地庫狀态 |
git add 檔案名 | 添加到暫存區 |
git commit -m “日志資訊” 檔案名 | 送出到本地庫 |
git reflog | 檢視曆史記錄 |
git reset --hard 版本号 | 版本穿梭 |
3.1 設定使用者簽名
簽名的作用是區分不同操作者的身份。使用者的簽名資訊在每一個版本的送出資訊中能夠看到,以此确認本次送出是誰做的。Git首次安裝必須設定使用者簽名。(這裡設定的使用者簽名和将來登入github的賬号沒有任何關系)
git config --global user.name jakiechai #設定使用者名為jakichai
git config --global user.email [email protected] #設定使用者郵箱為[email protected]
3.2 初始化本地庫
git如果要管理我們的某一個代碼目錄時我們就需要git獲得這個目錄的管理權,這就是初始化本地庫的作用,下面我找了我本地的一個springBoot的項目,将其交給git托管:
git init
git的相關目錄預設是隐藏的,我們檢視 git管理後目前該檔案夾的内容
3.3 檢視本地庫狀态
git status
3.4 工作區檔案添加到暫存區
git add touchssm
3.5 暫存區檔案送出到本地庫
git commit -m "first commit" touchssm
3.6 修改檔案内容
我修改了touchssm下随意的一個檔案,加了下面一句話
檢視本地庫狀态
将修改後的檔案添加到暫存區
暫存區的内容添加到本地倉庫
3.7 檢視曆史版本
git reflog #精簡版
git log #詳細版
3.8 版本穿梭
如果我們絕對目前項目的版本不如原來的版本,我們可以讓git目前維護的版本傳梭到以前的版本(master指針會指向目前版本)
檢視我原先更改的檔案内容,來确定我的版本是否更替:
四. Git分支操作
4.1 簡介
在版本控制的過程中,同時推進多個任務,為每個任務,我們可以建立每個任務的單獨分支。使用分支意味着程式員可以把自己的工作從開發線上分離來,開發自己的時候,不會影響主線分支的運作。對于初學者而言,分支可以簡單了解為副本,一個分支就是一個單獨的副本。(例如項目開發過程中,如果我先在正在推進主線工作,如果項目團隊的其它人需要進行代碼測試,這時候我們就可以建立分支,讓測試員工在分支上面工作,這樣就是不會影響主線的推進,同時又可以完成測試工作)
4.2 分支優點
可以同時并行的推進多個功能開發,提高開發效率。各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支删除重新開始即可。
4.3 分支的操作
指令名稱 | 作用 |
---|---|
git branch 分支名 | 建立分支 |
git branch -v | 檢視分支 |
git checkout | 分支名 |
git merge | 把指定的分支合并到目前分支上 |
4.4 檢視分支
目前隻有一個master分支
4.5 建立分支
git branch hot-fix
4.6 切換分支
切換到hot-fix分支
git checkout hot-fix
4.7 修改分支
在hot-fix分支上修改readme.md
安裝上面步驟送出更新内容到本地倉庫,并檢視更新結果
切換到master分支,檢視readme的内容
4.8 合并分支
git merge hot-fix
在合并分支時可能會遇到沖突問題,意思就是合并分支時,要合并的兩個分支在同一個位置有兩套完全不同的修改。Git無法替我們決定使用哪一個,這時候需要人為的決定新代碼的内容,下面示範一下沖突問題的發生以及解決辦法。
在master上修改readme.md
送出修改
切換到hot-fix分支并修改readme.md檔案
》
送出修改
切換會master分支,并合并兩個分支,發生沖突問題
開始手動合并解決分支問題,首先打開readme.md檔案
在readme.md中保留我們要保留的内容,删除我們不要的内容儲存即可達到手動更新
送出我們的更新内容到暫存區,然後執行送出,注意這時候使用git commit送出不能帶檔案名
五. Git團隊協作機制
5.1 團隊内協作
一個團隊内的成員是共享一個遠端庫的,是以團隊内部隻需要通過pull,push和clone等指令就可以實作代碼的同步,達到團隊内的協作
5.2 團隊外協作
對于團隊外合作,由于下面B公司員工不屬于A團隊的成員,是以他不能使用A團隊的遠端庫,是以如果他要修該項目,需要首先通過fork指令 ,将A團隊的項目代碼拉取到自己的本地庫,然後clone下來進行修改,修改完成後push到自己的遠端庫,同時發一個pull request指令到A團隊的遠端庫,A團隊的項目經過稽核之後就可以将B公式員工的修改拉取到自己的 遠端庫,達到團隊外協作。
六. GitHub操作
6.1 簡介
Github是全球最大的同性交友網站,是技術宅男的天堂😄
6.2 GitHub操作之上傳本地庫
注冊三個賬号來模拟團隊内協作和團隊外協作
- 建立遠端庫
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee) - 遠端庫内容
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee) - 建立遠端庫别名
建立别名的目的是由于遠端庫連結比較長,每次操作比較長,是以給遠端庫建立别名,下次使用遠端庫時直接使用别名即可
(下面我使用的是ssh方式,需要提前完成github的 ssh免密登入,由于我是m1這裡我就不操作了)
git remote add ori [email protected]:chailong2/gittest.git #也可以直接使用連結
#這個位址是我的遠端倉庫的https位址
git remote -v# 檢視别名
- 本地庫代碼推送到遠端庫上面
推送的機關是分支
git push ori master
github上檢視效果
6.3 GitHub操作之拉取遠端庫到本地庫
- 在github上面修改指定檔案的内容并送出
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee) - 将更新後的遠端庫拉取到本地
git pull [email protected]:chailong2/gittest.git master
3. 在本地檢視在github上面修改的檔案内容
發現内容已經修改成功,說明我們拉取成功
6.7 GitHub操作之克隆遠端倉庫到本地
- 建立新的檔案夾來接受克隆項目
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee) - 控制台進入指定目錄并開始clone
git clone [email protected]:chailong2/gittest.git
3. clone結果檢視
七. Idea內建Git
7.1 配置Git忽略檔案
在建立idea項目時,常常會建立一些對項目部署和運作的沒有太大作用的檔案,我們需要配置Git忽略這些檔案
- 建立忽略規則檔案***.ignore(直接在檔案中寫我們要忽略的檔案的字尾即可)
*.class
*.log
*.ctxt
*.mtj.tmp/
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
*.idea
*.iml
hs_err_pid*
.classpath
.project
.settings
target
- 在git.config中引用這個檔案
open ~/.gitconfig #打開gitconfig檔案(僅限mac這麼操作)
######
excludesfile=/Users/jackchai/Desktop/SpringBoot/git.ignore
7.2 idea中使用git
- 在idea中配置git環境
找到設定中的git,填入git.exe所在的檔案位置即可
2. 在idea初始化本地倉庫
在菜單欄的選中VCS,然後按下圖操作即可
檢視項目,會發現出現了.git檔案
3. 在idea将指定項目添加到暫存區和本地庫
關于git中idea中各類檔案顔色的含義:
綠色:已經加入了git控制,但是沒有送出
紅色:未有加入版本控制
藍色:加入,已送出有改動
白色:加入,已送出無改動
灰色:版本控制已經忽略該檔案
送出之後,綠色檔案就會變成正常的黑色,表示檔案已經送出到本地倉庫
- idea切換版本
随便修改一個代碼内容
滑鼠右擊指定檔案,點選git下的add将檔案添加到暫存區,然後點到git下的commit送出到本地倉庫
使用idea檢視版本資訊,idea左下角有一個git,點選後即可檢視所有的版本資訊(head和master表示目前版本)
選擇要切換的版本右擊選擇切換即可(下面我選擇的是first commit版本)
驗證切換結果
5. idea建立分支和切換分支
建立分支
方法一:指定要建立分支的項目,右擊選擇git下的Repository下的Branches,選擇彈出框的建立選項,輸入分支名即可建立成功
方法二:點選idea的右下角,選擇添加新分支即可建立
切換分支
點選右下角的branches選擇要切換的分支的,點選然後選擇checkout即可切換
6. idea合并分支
在Idea視窗的右下角,将branch1合并到master
合并時的沖突問題解決
在branch1分支上修改
在master分支上修改
目前版本情況
idea手動解決合并分支發生沖突問題
沖突問題解決結果
7.3 idea中內建Github
- 設定github賬号(建議用tokens登入)
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee) - 使用idea将項目傳到github上
在vcs中選擇将項目分享到Github選項
在彈出框中選擇share即可
Repository name:遠端倉庫名(和項目名保持一緻)
Remote:遠端位址别名
Decription:描述
3. 在github上檢視結果
7.4 idea其它操作
- 将項目推送到遠端庫
方法一:項目名右擊git->repository->push就行
方法二:vcs裡面可以操作
方法三:點選箭頭![]()
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee)
- 拉取遠端庫到本地
和push的三個方法是一樣的,操作的地方在一個位置,這個不細講了
注意:push是将本地代碼推送到遠端庫,如果本地庫代碼跟遠端庫代碼版本不一緻,push的操作是會被拒絕的。也就是說,要想push成功,一定要保證本地庫的版本要比遠端庫的版本高!是以一個成熟的程式員在動手改本地代碼之前,一定會先檢查下遠端庫跟本地代碼的差別!如果本地的代碼版本已經落後,切記要先pull拉取一下遠端庫的代碼,将本地代碼更新到最新以後,然後再修改,送出推送。
3. 克隆遠端庫到本地
方法一:進入idea時選擇get from version control,然後填寫url未遠端庫的位址就是
方法二:在idea裡面選擇建立項目,然後選擇建立項目通過版本控制![]()
一篇文章熟練掌握Git一. Git概述二. Git安裝三. Git常用指令四. Git分支操作五. Git團隊協作機制六. GitHub操作七. Idea內建Git八. 國内代碼托管中心碼雲(gitee)
八. 國内代碼托管中心碼雲(gitee)
8.1 簡介
總所周知,GitHub伺服器在國外,使用GItHub作為代碼項目托管網站,如果網速不好的話,嚴重影響體驗,甚至會出現登入不上的情況。針對這個情況,大家也可以使用國内項目托管網站-碼雲。碼雲是開源中國推出的基于GIt的代碼托管服務中心,使用方式和GitHub一樣,前面介紹的GitHub的操作方法都可以在gitee上面使用
8.2 碼雲上建立遠端庫
直接點選建立倉庫,然後填寫相關資訊即可
建立成功如下
8.3 Idea內建gitee碼雲
- idea安裝碼雲插件
在設定中選擇plugins插件,搜尋碼雲下載下傳gitee插件重新開機idea即可
2. 添加碼雲賬号
直接輸入gitee登入賬号
- 将項目分享到碼雲上面
操作都和gitee是一樣的,這裡是直接将本地倉庫分享到碼雲上,這樣碼雲上面就會自動建立新的倉庫,當然也可以直接在碼雲上面建立新倉庫,然後将代碼push到新倉庫中即可,結果都是一樣的。
gitee上面就會出現我剛剛分享的項目
8.4 碼雲複制github項目
碼雲可以直接将github上面的項目遷移到git中,操作很簡單
首先在碼雲上面建立立倉庫,然後選擇導入已有倉庫
開始拉取
檢視結果
當然gitee的強大功能遠不止這些,例如我們可以在碼雲上更新項目代碼,然後級聯更新github