Git 快速使用手冊(二)

NingHope發表於2020-12-08

Git 快速使用手冊(二)

五、分支(branch)

5.1 概念

在版本控制過程中,使用多條線同時推進多個任務。這裡面說的多條線,就是多個分支。

Git 的分支,其實本質上僅僅是指向提交物件的可變指標。 Git 的預設分支名字是master。 在多次提交操作之後,其實已經有一個指向最後那個提交物件的master分支。 master分支會在每次提交時自動向前移動。

5.2 分支的實際意義

使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。如果某個分支開發失敗,可以直接刪除該分支,不會影響其它分支。

5.3 分支的基本操作

  1. 檢視分支
git branch -v
  1. 建立分支
git branch [name]

  1. 切換分支
git checkout [branchname]

在這裡插入圖片描述

  1. 刪除分支
git branch -d [branchname]

測試:

  1. 進入branch01分支,建立Test4.txt檔案並新增內容

  2. 新增至暫存區並提交至本地庫

  3. 檢視分支

  1. 切換到主分支,檢視檔案列表

結論:各分支的修改與其它分支不相干

5.4 分支合併與衝突

  1. 合併分支
git merge [branchname]

測試:

  1. master分支中建立Test4.txt檔案並新增和branch01分支Test4.txt檔案中不同的內容
  2. 新增至暫存區並提交至本地庫
  3. master分支中合併branch01分支

❀ 什麼時候會出現衝突問題?

兩個將要合併的分支,在相同檔案的相同位置內容不一致時。

衝突的解決:

  1. 將所有衝突檔案進行修改
  2. 新增到暫存區
  3. 執行命令git commit -m "msg"命令

注意:commit命令不可以帶檔名

六、遠端庫

6.1 本地庫與遠端庫的互動

6.2 初始化本地庫和建立遠端庫

測試:

  1. 建立資料夾並初始化為本地庫

  1. 建立 GitHub 遠端庫

  1. 利用git remote add [originname] [originUrl]命令新增遠端地址
  2. 利用git remote -v命令檢視遠端地址

  1. 建立任意一個檔案並同步至本地庫
  2. 利用git branch -M main命令將master分支改名為main

6.3 push操作

測試:

  1. 利用git push [orginname] [branchname]進行推送操作

  1. 進入 GitHub 檢視之前建立的遠端庫

總結:可以看到遠端庫的內容發生了更新

6.4 clone操作

測試:

  1. 建立一個新的資料夾並進入其中
  2. 利用git clone [orginUrl]命令進行克隆操作

在這裡插入圖片描述

❀ 克隆操作完成了什麼?

  1. 初始化本地庫
  2. 將遠端庫內容完整地克隆到本地

6.5 Github 的邀請(invite)操作

測試:

  1. 在克隆的倉庫中建立新的檔案Demo.txt,同步到本地庫
  2. 將本地庫推送到遠端庫

可以看到這次push操作沒有進行登入驗證,原因是 Git 在使用時,本地有快取

  1. 通過控制皮膚,進入到 Windows 的憑據管理器,將 Git 的憑據刪掉

  1. 追加內容到檔案Demo.txt,同步到本地庫
  2. 再次將本地庫推送到遠端庫,本次提示登入時登入其它 Github 賬號(user2)

可以看到這次push操作發生了403錯誤,原因是該賬號沒有加入團隊,因而無權訪問

  1. 登入原先的 Github 賬號(user1),開啟對應專案,點選Settings,點選Manage access

  1. 點選invite a collaborator,並輸入成員的資訊

  1. 點選複製邀請連線

  1. 退出登入,再登入被邀請人的賬號(user2)

  2. 貼上連結進入,點選同意邀請

  1. 再次以協作者身份進行push操作,發現push成功

6.6 對遠端庫的拉取(pull)操作

  • 6.1節圖示中的pull操作,可以分為兩步執行——fetch操作和merge操作

測試:

  1. 返回原來的倉庫,通過執行git fetch orgin命令,將遠端庫抓取到本地

  1. 通過git checkout orgin/main命令,切換到orgin/main
  2. 檢視內容,確認無誤後可以返回main,通過git merge orgin/main命令進行合併操作

提示:以上兩種操作(fetch操作和merge操作),在確認沒有風險時,可以直接用pull操作(即git pull orgin)代替。

6.7 協作開發時的衝突與解決

測試:

  1. 在 user1 的本地庫下,建立檔案Test.txt,新增些許內容,並推送至遠端庫

提示:在推送之前記得切換到 user1 的賬號

  1. 在賬號2的本地庫下,進行pull操作

  1. 追加內容到該Test.txt檔案中

  1. 執行push命令

提示:在推送之前記得切換到 user2 的賬號

  1. 進入賬號1的本地庫,追加內容到該Test.txt檔案中

  1. 執行push命令

提示:在推送之前記得切換到 user1 的賬號

這裡會發生錯誤——提示你當前遠端庫和本地庫的內容有衝突,需要先執行pull操作進行衝突解決。

  1. 執行pull命令

  1. 檢視發生衝突的檔案Test.txt,解決衝突

  1. 同步到本地庫

注意:和之前分支衝突的解決一樣,最後的commit操作不要帶檔名

  1. 推送到遠端庫

6.8 跨團隊協作的互動

跨團隊協作主要操作forkpull requestmerge pull request皆在 GitHub 上完成,具體可檢視 GitHub 的官方文件:collaborating-with-issues-and-pull-requests

七、IntelliJ IDEA 整合 Git

7.1 配置 Git 路徑

7.2 初始化本地庫

步驟:

  1. 建立一個專案(模組)

  2. 點選選單欄的VCS,找到並點選Create Git Repository,即可建立完成

7.3 新增到暫存區

步驟:

  1. 在模組中建立一個檔案Demo.txt

可以看到 IDEA 自動彈出了一個Add操作的提示,我們可以點選Add,並且勾選Remember don't ask again選項,以便使其自動提交。當然,我們也可以選擇Cancel,以下面的方式,進行手動提交。

  1. 右鍵點選新建立的模組

  2. 找到Git選項,點選Add,即可將模組中的內容進行提交

提示:可以看到,Add選項後面有 IDEA 預設的快捷鍵——Ctrl + Alt + A,我們可以採用這個快捷鍵進行更方便的提交。當然,也可以設定自己的快捷鍵,或者直接按照步驟一中的方式,使其自動提交。

7.4 提交到本地庫

步驟:

  1. 點選上圖中的Commit選項,或者直接採用 IDEA 的預設快捷鍵Ctrl + K,跳轉到提交介面

  1. 上圖Commit Message一欄,即之前的-m選項的內容,輸入相應資訊後點選Commit即提交完成

7.5 推送本地庫到 Git 託管服務平臺

步驟:

  1. 下載 GitHub 或 Gitee 的 IDEA 的外掛(本次採用國內速度較快的 Gitee)

注意:2020年10月起,GitHub 的主分支master更名為main。為保障一致性,建議 IDEA 將主分支名稱配置為main

提示:對於 Gitee 上已有的專案,若想將主分支名稱更改為main,可以基於主分支建立新的分支main,然後設定為主分支,並將原先的master分支刪除,由此即可完成主分支的更名操作。

  1. 點選選單欄的VCS,找到並點選Share Project on Gitee

  1. 許可權驗證後,輸入相應資訊,點選Share即可完成推送

7.6 克隆遠端倉庫到本地

步驟:

  1. 點選選單欄的File,點選New選項裡的Project from Version Control...,跳轉到

  1. URL輸入框中輸入你想要克隆的專案的URL,點選Clone完成克隆

7.7 使用 IDEA 解決衝突問題

步驟:

  1. 新建一個 Java 專案,按照以上步驟將專案推送到 Gitee 平臺
  2. 建立一個Person

  1. 新增到暫存區,提交到本地庫,推送到遠端庫

  2. 在 Gitee 網站上為 Person 類新增 weight 屬性

  1. 輸入提交資訊並點選提交

  1. 在 IDEA 中為Person類新增height屬性,新增到暫存區,提交到本地庫

  1. 使用快捷鍵Ctrl + Shift + K進行Push操作
  2. 可以看到,IDEA自動彈出了Push Rejected視窗,這是因為我們在其Push之前,對遠端庫進行了修改,導致遠端庫內容有本地不存在的內容,即發生了版本衝突

  1. 點選Merge,進入Conflicts視窗

  1. 選中衝突列表中你想要解決的檔案(這裡只有Person.java一個衝突),點選Merge...,進入Merge Revision for XXX視窗

  1. 解決衝突問題後點選Apply
  2. 重新整理在 Gitee 網站上的 Person 類,發現衝突得以解決

八、總結

  1. 本手冊中涵蓋了日常開發中常用的 Git 操作,基本滿足了快速入門 Git 的作用。

  2. 從第七章的內容可以看出,使用 IntelliJ IDEA 操作 Git 非常的簡單方便,日常開發中足以夠用。不過,一些不太常見的問題,還是要藉助Git Bash去完成,這裡提供了 Git 的官方手冊,以供參考:https://git-scm.com/book/zh/v2

  3. Git Bash本質上是一個 MinGW ,日常中除了作為 Git 的主要操作視窗,還可以利用其 MinGW 的本質特性,用來執行 Linux 命令等。

相關文章