一、Git簡介
1.1 項目的版本管理
在項目開發過程中,項目沒開發到一個節點就會對當前項目進行備份,這個備份就是項目的一個版本;當我們繼續開發一個階段后,再次進行備份,就生成新的版本——多個版本的集合就是項目的版本庫
在項目版本管理中,我們可以使用手動進行管理,但是存在一些問題:
- 需要手動維護版本的更新日志,記錄每個版本的變化
- 需要手動查找歷史版本,當歷史版本比較多的時候,查找工作很繁瑣
- 當我們需要回退到某個版本時,只能夠手動的通過IDE工具手動打開
1.2 團隊協同開發
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UIBI9Oy5-1639493889409)(imgs/1616032657017.png)]
1.3 版本管理工具—Git
Git是一個開源的分布式版本控制系統,用于敏捷高效的處理任何大小項目的版本管理。
核心功能:
- 項目的版本管理
- 團隊協同開發
二、Git下載及安裝
2.1 下載Git
https://git-scm.com/ |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CPgIpSJI-1639493889413)(imgs/1616033012417.png)] |
2.2 安裝Git
除了選擇安裝位置以外,其他都傻瓜式安裝
2.3 檢查
- win + r
- 輸入cmd
- 輸入
git --version
三、Git架構
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cCFrAe8W-1639493889414)(imgs/1616034871080.png)]
四、Git基本使用
4.1 創建版本庫
-
在工作空間的目錄中,右鍵“Git Bash Here”打開git終端
-
在Git終端中輸入
git init
指令,創建版本庫(就是一個.git目錄)[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-l7wW7Shn-1639493889417)(imgs/1616036472274.png)]
4.2 查看版本庫狀態
git status
4.3 將工作空間的修改添加到暫存區
git add a.txt ## 只將工作空間中的某個文件add到暫存區
git add . ## 將工作空間中所有文件都add暫存區
4.4 將暫存區內容提交到版本庫(倉庫)
git commit -m '版本說明'
4.5 查看版本庫中的歷史版本
git log --oneline ## 每個版本信息只顯示一行
get log ## 顯示每個版本的詳細信息
4.6 設置用戶信息
因為我們將暫存區的內容提交到版本時,會記錄當前版本的提交的用戶信息,因此在版本提交之前需要先綁定用戶信息
git config --global user.name 'ergou'
git config --global user.email 'haha@hehe.com'
4.7 同步歷史版本到工作空間
git checkout 版本號
五、遠程倉庫
5.1 遠程倉庫
遠程倉庫,遠程版本庫;實現版本庫的遠程存儲,以實現團隊的協同開發
遠程倉庫 |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BdS1W4Zj-1639493889419)(imgs/1616038980419.png)] |
5.2 如何獲得遠程倉庫
- 使用GitLab搭建私服
- 遠程倉庫提供商
- GitHub https://gitbub.com
- Gitee(碼云) https://gitee.com
- Coding
5.3 創建遠程倉庫(碼云)
-
注冊賬號
- 366274379 / admin123
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5O0L8CvS-1639493889420)(imgs/1616039783023.png)]
-
創建遠程倉庫:https://gitee.com/qfytao/j2010.git
-
遠程倉庫管理(添加開發人員)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VWFAU8Pi-1639493889420)(imgs/1616040201202.png)]
六、遠程倉庫操作
6.1 push本地倉庫到遠程倉庫
6.1.1 準備工作
-
創建本地工作空間
D:\fmwysrcmainjavaresourcestestjavapom.xml
-
初始化本地倉庫
git init
-
將工作空間搭建的項目結構add到暫存區
git add .
-
將暫存區文件提交到版本庫,生成第一個版本
git commit -m '創建項目'
-
為當前項目創建一個遠程倉庫
https://gitee.com/qfytao/fmwy.git
6.1.2 本地倉庫關聯遠程倉庫
建立D:\fmwy中的本地倉庫 和 遠程倉庫https://gitee.com/qfytao/fmwy.git的關聯
git remote add origin https://gitee.com/qfytao/fmwy.git
6.1.3 查看遠程倉庫狀態
git remote -v
6.1.4 將本地倉庫push到遠程倉庫
push到遠程倉庫需要gitee的帳號和密碼
git push origin master
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fzPZAkpC-1639493889421)(imgs/1616049675765.png)]
6.2 其他開發者pull遠程倉庫到本地
其他開發者:www.1114325587@qq.com *****
6.2.1 先創建本地倉庫
-
在E盤創建ws目錄(空目錄),進入ws目錄,打開Git客戶端
-
創建本地版本庫
git init
6.2.2 拉取遠程倉庫到本地
-
拉取遠程倉庫
git pull 遠程倉庫地址 master git pull https://gitee.com/qfytao/fmwy2.git master
6.3 解決協同開發沖突問題
場景: Helloworld.java [bbb]開發者1:濤哥 開發者2:小喬
-------------------------------------------------------------------------------------------
git pull fmwy2 master git pull fmwy2 master 在Hellworld.java中新增內容 “bbb”
在Hellworld.java中新增內容 “aaa”git add .git commit -m ''git push fmwy2 master
git add .
git commit -m ''
git push fmwy2 master【會失敗!!!----在我pull之后,push之前被其他開發人員push過】
問題:我該如何操作?
git pull fmwy2 master 【將小喬修改的內容拉取到我本地】對文件進行沖突合并git add .
git commit -m ''
git push fmwy2 maste
HelloWorld.java
>>>>>>>>>>>>>>>>>>>>>HEAD
aaa
=================
bbb
<<<<<<<<<<<<<<<<<<<<< sikdfhjkasdfhjasdfhjk
七、分支管理
7.1 什么是分支
分支就是版本庫中記錄版本位置(支線),分支之間項目會影響,使用分支可以對項目起到保護作用
分支就是一條時間線,每次提交就在這條時間線上形成一個版本
7.2 分支特性
- 創建一個新的版本庫,默認創建一個主分支—master分支
- 每個分支可以進行單獨管理(常規分支、保護分支、只讀分支)
- 分支是可以合并的
7.3 分支操作
7.3.1 創建分支
git branch branch_name
7.3.2 查看分支
git branch
7.3.3 切換分支
git branch branch_name # 切換到指定分支上的最新版本
7.3.4 檢出分支
git checkout 歷史版本 -b branch_name # 簽出指定的歷史版本創建新分支
7.3.5 分支合并
- 三方合并
- 快速合并
# 在master分支執行 git merge dev 表示將dev分支合并merge
git merge breanch_name
八、Idea整合Git使用
作為Java開發工程,我們代碼的編寫工作都是在IDE工具(idea)中完成,因此我們需要了解和掌握直接使用IDE工具完成Git的操作
8.1 IDEA關聯Git
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-i4t3nA2j-1639493889422)(imgs/1616118889055.png)]
8.2 IDEA中Git版本管理
準備工作:打開IDEA新建一個web工程
8.2.1 創建本地版本庫
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ENbgEJzN-1639493889422)(imgs/1616119511804.png)] |
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yl3JQ2To-1639493889423)(imgs/1616119549533.png)] |
8.2.2 設置忽略文件
在工作空間中有些文件是不需要記錄到版本庫中的(例如.idea、target、.iml文件),可以通過設置忽略提交來實現
-
在工作空間的根目錄(項目的根目錄)中創建一個名為
.gitignore
文件 -
在
.gitignore
文件配置忽略過濾條件.idea target *.iml
8.2.3 將工作空間add到暫存區
-
選擇項目/文件—右鍵—Git—Add(添加到暫存區的文件–綠色)
-
如果一個文件創建好之后還沒有添加到暫存區–棕紅色
-
添加到暫存區的操作可以設置默認添加
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VC6ef12H-1639493889423)(imgs/1616120607480.png)]
8.2.4 將暫存區提交到版本庫
-
選擇項目/文件—右鍵—Git–Commit(記錄到版本庫的文件–黑色)
-
如果對記錄到 版本庫的文件進行了修改,也就是說工作空間和版本庫不一致–藍色
8.3 IDEA中Git分支管理
8.3.1 創建分支
- 點擊IDEA右下角
Git
- 在彈窗中點擊
New Branch
- 輸入新分支的名稱
8.3.2 切換分支
- 點擊IDEA右下角
Git
- 點擊非當前分支右邊的箭頭
- 在選項卡點擊
checkout
8.3.3 刪除分支
點擊右小角git |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7pY3Jm1O-1639493889424)(imgs/1616123528818.png)] |
8.3.4 合并分支
例如:將dev合并到master
- 切換到master分支
- 點擊dev分支右面的箭頭,在展開的菜單中選擇
Merge into current
8.4 IDEA中使用Git進行團隊協同開發
8.4.1 項目管理者
-
完成項目搭建
- 略
-
為當前項目創建本地版本庫
-
將搭建好的項目提交到本地版本庫
- add到暫存區
- commit到版本庫
-
創建遠程版本庫(遠程倉庫)
- https://gitee.com/qfytao/git-jd.git
- 管理—添加開發者
-
將本地倉庫push到遠程倉庫(master分支——master分支)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eRiobKUN-1639493889425)(imgs/1616124645208.png)] |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-C9XlLNfv-1639493889425)(imgs/1616124765710.png)] |
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yvHXxc7t-1639493889426)(imgs/1616124999737.png)] |
-
在本地創建dev分支
在遠程倉庫
checkout as
新建本地dev
分支(master需要進行保護)[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6hwSjGsm-1639493889426)(imgs/1616125230163.png)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7MEV8S42-1639493889427)(imgs/1616125375770.png)] -
將本地dev分支push到遠程倉庫,新建遠程倉庫的dev分支
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-frrc3mPO-1639493889427)(imgs/1616125529083.png)]
-
設置遠程倉庫中master分支為保護分支
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ahh2hSdC-1639493889428)(imgs/1616125664648.png)]
8.4.2 項目開發者
-
從管理員提供的遠程倉庫pull項目到本地
- 遠程倉庫 https://gitee.com/qfytao/git-jd.git
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oPKui0pu-1639493889428)(imgs/1616126055257.png)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-79ZV88tQ-1639493889429)(imgs/1616126193999.png)] -
打開項目(此時本地工作空間的項目和遠程倉庫是同步的)
-
開發步驟:
- 選擇要修改的文件–pull
- 進行修改操作
- 測試本地修改
- add到暫存區
- commit到本地版本庫
- push到遠程倉庫(dev)
8.5 解決團隊協同開發的沖突問題
沖突:在pull之后,push之前被其他開發者這push成功
- 選擇產生沖突的文件—pull
- 彈出彈窗提示:accpet yours | accept theirs | Merge
- accpet yours 保留自己的版本(提交時會覆蓋其他開發者代碼)
- accpet theirs 保留遠程倉庫上的版本(會導致自己修改的代碼丟失)
Merge
手動合并(和其他開發者溝通合并方案)