Git 快速使用手冊(二)
Git 快速使用手冊(二)
五、分支(branch)
5.1 概念
在版本控制過程中,使用多條線同時推進多個任務。這裡面說的多條線,就是多個分支。
Git 的分支,其實本質上僅僅是指向提交物件的可變指標。 Git 的預設分支名字是
master
。 在多次提交操作之後,其實已經有一個指向最後那個提交物件的master
分支。master
分支會在每次提交時自動向前移動。
5.2 分支的實際意義
使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。如果某個分支開發失敗,可以直接刪除該分支,不會影響其它分支。
5.3 分支的基本操作
- 檢視分支
git branch -v
- 建立分支
git branch [name]
- 切換分支
git checkout [branchname]
- 刪除分支
git branch -d [branchname]
測試:
-
進入
branch01
分支,建立Test4.txt
檔案並新增內容 -
新增至暫存區並提交至本地庫
-
檢視分支
- 切換到主分支,檢視檔案列表
結論:各分支的修改與其它分支不相干
5.4 分支合併與衝突
- 合併分支
git merge [branchname]
測試:
- 在
master
分支中建立Test4.txt
檔案並新增和branch01
分支Test4.txt
檔案中不同的內容 - 新增至暫存區並提交至本地庫
- 在
master
分支中合併branch01
分支
❀ 什麼時候會出現衝突問題?
兩個將要合併的分支,在相同檔案的相同位置內容不一致時。
衝突的解決:
- 將所有衝突檔案進行修改
- 新增到暫存區
- 執行命令
git commit -m "msg"
命令
注意:
commit
命令不可以帶檔名
六、遠端庫
6.1 本地庫與遠端庫的互動
6.2 初始化本地庫和建立遠端庫
測試:
- 建立資料夾並初始化為本地庫
- 建立 GitHub 遠端庫
- 利用
git remote add [originname] [originUrl]
命令新增遠端地址 - 利用
git remote -v
命令檢視遠端地址
- 建立任意一個檔案並同步至本地庫
- 利用
git branch -M main
命令將master
分支改名為main
6.3 push
操作
測試:
- 利用
git push [orginname] [branchname]
進行推送操作
- 進入 GitHub 檢視之前建立的遠端庫
總結:可以看到遠端庫的內容發生了更新
6.4 clone
操作
測試:
- 建立一個新的資料夾並進入其中
- 利用
git clone [orginUrl]
命令進行克隆操作
❀ 克隆操作完成了什麼?
- 初始化本地庫
- 將遠端庫內容完整地克隆到本地
6.5 Github 的邀請(invite)操作
測試:
- 在克隆的倉庫中建立新的檔案
Demo.txt
,同步到本地庫 - 將本地庫推送到遠端庫
可以看到這次
push
操作沒有進行登入驗證,原因是 Git 在使用時,本地有快取
- 通過控制皮膚,進入到 Windows 的憑據管理器,將 Git 的憑據刪掉
- 追加內容到檔案
Demo.txt
,同步到本地庫 - 再次將本地庫推送到遠端庫,本次提示登入時登入其它 Github 賬號(user2)
可以看到這次
push
操作發生了403
錯誤,原因是該賬號沒有加入團隊,因而無權訪問
- 登入原先的 Github 賬號(user1),開啟對應專案,點選
Settings
,點選Manage access
- 點選
invite a collaborator
,並輸入成員的資訊
- 點選複製邀請連線
-
退出登入,再登入被邀請人的賬號(user2)
-
貼上連結進入,點選同意邀請
- 再次以協作者身份進行
push
操作,發現push
成功
6.6 對遠端庫的拉取(pull)操作
6.1
節圖示中的pull
操作,可以分為兩步執行——fetch
操作和merge
操作
測試:
- 返回原來的倉庫,通過執行
git fetch orgin
命令,將遠端庫抓取到本地
- 通過
git checkout orgin/main
命令,切換到orgin/main
中 - 檢視內容,確認無誤後可以返回
main
,通過git merge orgin/main
命令進行合併操作
提示:以上兩種操作(
fetch
操作和merge
操作),在確認沒有風險時,可以直接用pull
操作(即git pull orgin
)代替。
6.7 協作開發時的衝突與解決
測試:
- 在 user1 的本地庫下,建立檔案
Test.txt
,新增些許內容,並推送至遠端庫
提示:在推送之前記得切換到 user1 的賬號
- 在賬號2的本地庫下,進行
pull
操作
- 追加內容到該
Test.txt
檔案中
- 執行
push
命令
提示:在推送之前記得切換到 user2 的賬號
- 進入賬號1的本地庫,追加內容到該
Test.txt
檔案中
- 執行
push
命令
提示:在推送之前記得切換到 user1 的賬號
這裡會發生錯誤——提示你當前遠端庫和本地庫的內容有衝突,需要先執行
pull
操作進行衝突解決。
- 執行
pull
命令
- 檢視發生衝突的檔案
Test.txt
,解決衝突
- 同步到本地庫
注意:和之前分支衝突的解決一樣,最後的
commit
操作不要帶檔名
- 推送到遠端庫
6.8 跨團隊協作的互動
跨團隊協作主要操作
fork
、pull request
、merge pull request
皆在 GitHub 上完成,具體可檢視 GitHub 的官方文件:collaborating-with-issues-and-pull-requests
七、IntelliJ IDEA 整合 Git
7.1 配置 Git 路徑
7.2 初始化本地庫
步驟:
-
建立一個專案(模組)
-
點選選單欄的
VCS
,找到並點選Create Git Repository
,即可建立完成
7.3 新增到暫存區
步驟:
- 在模組中建立一個檔案
Demo.txt
可以看到 IDEA 自動彈出了一個
Add
操作的提示,我們可以點選Add
,並且勾選Remember don't ask again
選項,以便使其自動提交。當然,我們也可以選擇Cancel
,以下面的方式,進行手動提交。
-
右鍵點選新建立的模組
-
找到
Git
選項,點選Add
,即可將模組中的內容進行提交
提示:可以看到,
Add
選項後面有 IDEA 預設的快捷鍵——Ctrl + Alt + A
,我們可以採用這個快捷鍵進行更方便的提交。當然,也可以設定自己的快捷鍵,或者直接按照步驟一中的方式,使其自動提交。
7.4 提交到本地庫
步驟:
- 點選上圖中的
Commit
選項,或者直接採用 IDEA 的預設快捷鍵Ctrl + K
,跳轉到提交介面
- 上圖
Commit Message
一欄,即之前的-m
選項的內容,輸入相應資訊後點選Commit
即提交完成
7.5 推送本地庫到 Git 託管服務平臺
步驟:
- 下載 GitHub 或 Gitee 的 IDEA 的外掛(本次採用國內速度較快的 Gitee)
注意:2020年10月起,GitHub 的主分支
master
更名為main
。為保障一致性,建議 IDEA 將主分支名稱配置為main
。提示:對於 Gitee 上已有的專案,若想將主分支名稱更改為
main
,可以基於主分支建立新的分支main
,然後設定為主分支,並將原先的master
分支刪除,由此即可完成主分支的更名操作。
- 點選選單欄的
VCS
,找到並點選Share Project on Gitee
- 許可權驗證後,輸入相應資訊,點選
Share
即可完成推送
7.6 克隆遠端倉庫到本地
步驟:
- 點選選單欄的
File
,點選New
選項裡的Project from Version Control...
,跳轉到
- 在
URL
輸入框中輸入你想要克隆的專案的URL,點選Clone
完成克隆
7.7 使用 IDEA 解決衝突問題
步驟:
- 新建一個 Java 專案,按照以上步驟將專案推送到 Gitee 平臺
- 建立一個
Person
類
-
新增到暫存區,提交到本地庫,推送到遠端庫
-
在 Gitee 網站上為 Person 類新增 weight 屬性
- 輸入提交資訊並點選
提交
- 在 IDEA 中為Person類新增height屬性,新增到暫存區,提交到本地庫
- 使用快捷鍵
Ctrl + Shift + K
進行Push
操作 - 可以看到,IDEA自動彈出了
Push Rejected
視窗,這是因為我們在其Push
之前,對遠端庫進行了修改,導致遠端庫內容有本地不存在的內容,即發生了版本衝突
- 點選
Merge
,進入Conflicts
視窗
- 選中衝突列表中你想要解決的檔案(這裡只有
Person.java
一個衝突),點選Merge...
,進入Merge Revision for XXX
視窗
- 解決衝突問題後點選
Apply
- 重新整理在 Gitee 網站上的 Person 類,發現衝突得以解決
八、總結
-
本手冊中涵蓋了日常開發中常用的 Git 操作,基本滿足了快速入門 Git 的作用。
-
從第七章的內容可以看出,使用 IntelliJ IDEA 操作 Git 非常的簡單方便,日常開發中足以夠用。不過,一些不太常見的問題,還是要藉助
Git Bash
去完成,這裡提供了 Git 的官方手冊,以供參考:https://git-scm.com/book/zh/v2 -
Git Bash
本質上是一個 MinGW ,日常中除了作為 Git 的主要操作視窗,還可以利用其 MinGW 的本質特性,用來執行 Linux 命令等。
相關文章
- git 基本使用手冊Git
- 最快速STATSPACK使用指南,實用手冊
- Eclipse上GIT外掛EGIT使用手冊EclipseGit
- Linux使用手冊-vi使用手冊Linux
- TcpDump使用手冊TCP
- MyBatis 使用手冊MyBatis
- sqlmap使用手冊SQL
- Mybatis應用手冊MyBatis
- Tmux使用手冊UX
- Docker使用手冊Docker
- Promise使用手冊Promise
- Redis使用手冊Redis
- iptables 使用手冊
- DotProject 使用手冊Project
- Zabbix 使用手冊
- Cobra框架使用手冊框架
- Memcached Client 使用手冊client
- jQuery使用手冊(收藏)jQuery
- 儀器使用手冊
- Eclipse上GIT外掛EGIT使用手冊之四_配置.gitignoreEclipseGit
- PerfDog WEB端使用手冊Web
- 【C#】CsvHelper 使用手冊C#
- Room Database完全使用手冊OOMDatabase
- MongoDB和pymongo自用手冊MongoDB
- less語法實用手冊
- Linux iptables應用手冊Linux
- gcc使用手冊(2)(轉)GC
- gcc使用手冊(3)(轉)GC
- gcc使用手冊(4)(轉)GC
- 《Redis 使用手冊》- 字串(PHP 版本)Redis字串PHP
- MySQL DBA 常用手冊小結MySql
- ThreadLocal 使用手冊 | 按需收藏thread
- Linux parallel 命令使用手冊LinuxParallel
- BeautifulSoup使用手冊(查詢篇)
- Kotlin 協程使用手冊Kotlin
- Gerrit和Jenkins使用手冊Jenkins
- MySQL DBA常用手冊小結MySql
- AutoMapper使用手冊(一)APP