教會舍友玩 Git (再也不用擔心他的學習)

BWH_Steven發表於2020-09-10

舍友長大想當程式設計師,我和他爺爺奶奶都可高興了,寫他最喜歡的喜之郎牌Git文章,學完以後,再也不用擔心舍友的學習了(狗頭)哪裡不會寫哪裡 ~~~

一 先來聊一聊

太多東西屬於,總在用,但是一直都沒整理的東西了,從剛接觸程式設計那會,就學著各種教程的進行 ”點選“ ,”輸入“,Git 也算一個老生常談的內容,想用好也沒那麼容易,這一篇從前因,以及下載安裝、配置,以及實際的上手方式,整理了出來,不過還是要說,這一篇適合沒接觸過 Git ,以及 Git 運用不是很熟練的朋友,我用了大量的文字以及圖片進行了說明,有些朋友可能會感覺頭暈哈哈哈,我感覺,看完起碼對於一個新手朋友來說還是有一定幫助的。

不過想進階,以及想看大量命令的朋友就不太適合了,畢竟這是一篇類似保姆級的入門文章

有需要可以看一下這一篇喔,最近推薦蠻多的一篇 ~

「一勞永逸」一張腦圖帶你掌握Git命令 By:TianTianUp

https://juejin.im/post/6869519303864123399

(1) 為什麼要用版本控制?

不管是學生時期,亦或者工作了,有時候免不了需要寫一些文件,例如你交一份報告給你的指導老師, 最終通過的報告,總是在不斷溝通與修改中完成的,例如 V1、V3、V5 是傳給老師的版本,老師標註錯誤後會回退給我一個偶數的版本,即 V2、V4、V6,這就是版本的一個通俗的概念

而在開發的過程中,隨著開發進度的進行,軟體的版本也同樣需要不斷的進行迭代,不管你的程式碼迭代只進行在你本地,亦或者特定的伺服器上,如果按照剛才提交報告的形式進行迭代,就會出現一個問題:即每一個版本中大量程式碼是重複的

那再想想辦法,使用最新的內容替換掉原先舊的版本,或者只保留最新版本以及最新版的前一個版本

但是新問題又出現了:程式碼重複確實少了,但是如果多個人同時修改,編輯這個檔案,更會出現更多衝突與問題

要考慮的東西太多了,有沒有一種比較東西可以幫助我們呢?

這就是版本控制這個概念以及相關技術出現的一種原因了

(3) 版本控制簡介

版本控制最主要的功能就是追蹤檔案的變更。它將什麼時候、什麼人更改了檔案的什麼內容等資訊忠實地了記錄下來。每一次檔案的改變,檔案的版本號都將增加。除了記錄版本變更外,版本控制的另一個重要功能是並行開發。軟體開發往往是多人協同作業,版本控制可以有效地解決版本的同步以及不同開發者之間的開發通訊問題,提高協同開發的效率。並行開發中最常見的不同版本軟體的錯誤(Bug)修正問題也可以通過版本控制中分支與合併的方法有效地解決。

所以,需要對內容版本迭代進行管理,以及多人協作時一定需要使用版本控制

(二) 版本控制軟體

工欲利其事必先利其器,有這種需求,自然也不用擔心,沒這種產品,目前常見的版本控制產品很多,不過作為一名開發人員,其實聽到最多的還是 Git 和 SVN,來看看區別

(1) 集中版本控制:SVN

SVN是集中式版本控制系統,也就是說,所有版本的資料都是存放在伺服器上的,每次要做什麼事情,每個人都是使用自己的電腦,去向中央伺服器進行拉取最新的版本內容,完事後再推回去新版本,但是這個行為需要聯網的支援,沒有網路的情況下,使用者只能看到本地以前同步過的內容,無法檢視歷史版本,這種方式,會受到網路,以及伺服器損壞導致資料丟失的掣肘

(2) 分散式版本控制:Git

Git 大家應該很熟悉了,或多或者也都有用過,還有馬上能聯想到的 GitHub、GitLab、Gitee

Git是分散式版本控制系統,換句話說,它沒有像 SVN 那樣的中央伺服器,它最大的特點就是所有版本資訊倉庫都會同步到每個使用者的電腦中,這樣每個人即使在本地也可以檢視所有歷史的版本,沒有聯網的情況,也可以在本地的倉庫提交,聯網時 push 即可,一定程度上解決了前面 SVN 遇到的一些問題

(三) Git 歷史

感興趣的簡單看看就行了,直接貼的,略過也行

同生活中的許多偉大事件一樣,Git 誕生於一個極富紛爭大舉創新的年代。Linux 核心開源專案有著為數眾廣的參與者。絕大多數的 Linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上(1991-2002年間)。到 2002 年,整個專案組開始啟用分散式版本控制系統 BitKeeper 來管理和維護程式碼。

到 2005 年的時候,開發 BitKeeper 的商業公司同 Linux 核心開源社群的合作關係結束,他們收回了免費使用 BitKeeper 的權力。這就迫使 Linux 開源社群(特別是 Linux的締造者 Linus Torvalds )不得不吸取教訓,只有開發一套屬於自己的版本控制系統才不至於重蹈覆轍。他們對新的系統訂了若干目標:

  • 速度

  • 簡單的設計

  • 對非線性開發模式的強力支援(允許上千個並行開發的分支)

  • 完全分散式

  • 有能力高效管理類似 Linux 核心一樣的超大規模專案(速度和資料量)

二 下載安裝 Git

我這邊本來就裝著一箇舊版本的 Git,為了演示截圖,重新裝一下,解除安裝很簡單,只需要把環境變數給清了,然後安裝目錄或者控制皮膚刪除就行了

(一) 下載

下載先考慮的當然是官網:https://git-scm.com/

直接點選右下角的 Download,跳轉後選擇適合自己的系統版本就行了

不過官網下載畢竟還有個牆的問題,要麼一直轉圈,要麼就下載極其緩慢

那麼淘寶映象下載地址就又來了:http://npm.taobao.org/mirrors/git-for-windows/

  • 選擇版本,例如:v2.28.0.windows.1
  • 選擇適合自己系統檔案:例如:Git-2.28.0-64-bit.exe

下圖為淘寶映象中選擇版本圖

(二) 安裝

點選下載好的安裝程式,剛開啟就是一個許可宣告,直接下一步就行了,接著就是選擇安裝路徑,選擇一個適合的安裝位置

首先選擇要安裝的元件,保持預設即可,沒勾選的內容,是關於是否在桌面建立快捷方式,以及是否在控制檯中使用 TrueType 字型以及是否每天檢查 Git (Windows)更新的

這一步是選擇開始選單的資料夾名稱,直接下一步

這一步用來選擇 Git 預設的編輯器,預設是 Vim 選擇自己用的例如 sublime 、vs code 都可以,這個地方用的不是太多,用預設倒也可以

這一項選擇第二個

選擇 HTTPS 的後端傳輸,選擇第一項 OpenSSL 庫

這是用來配置行尾符號裝換的,在 Win 上我們一般推薦使用第一個選項

這裡就是用來配置你最後使用 Git Bash 的時候,是使用MinTTY(MSYS2的預設終端)還是 Win 預設的 cmd.exe,但是使用前者可以調整大小視窗,以及使用Unicode字型等特點,後者在某些方面有一些掣肘,所以我們選擇第一項

關於 pull 時候的處理,選擇預設即可,pull 後面會講

這裡選擇第二個選項,即 "啟用Git憑證管理器" Windows的 Git 憑證管理器為 Windows 提供安全的Git 憑證儲存

下面的第一個選項是 "啟用檔案系統快取",檔案系統資料將被批量讀取並快取在記憶體中用於某些操作(“core.fscache”設定為“true”),這提供了顯著的效能提升。

第二個選項是 "啟用符號連結",啟用符號連結(需要SeCreateSymbolicLink許可權),不過,現有儲存庫不受此設定的影響

所以選擇第一項即可

這一項不勾選,是一些額外的支援,不一定用得到,且看提示尚存未知 bug

直接點選安裝就可以了

(三) 驗證安裝

安裝後,首先開始選單中會有提示最近新增的內容,同時在任意資料夾下右鍵也會多出兩個選項,Git GUI Here、Git Bash Here,同時它會預設幫我們配置環境變數

例如我右鍵點選 Git Bash Here,就會彈出,同時輸入一些基本命令後,也是有反應的

Git Bash:Unix 與 Linux 風格的命令列,這是一般最常用的

Git CMD:Windows風格的命令列(長得就和 cmd 差不多)

Git GUI:圖形介面的Git,不建議入門學習使用,學習還是以學習命令為主,在考慮圖形介面

說明一下:使用 git 會涉及到一些常見的 Linux 命令,不過因為使用者是基於像 Windows 這樣擁有圖形介面的系統,所以也不用每次使用都通過 cd ,直接通過資料夾,右鍵點開也是可以的,不過Linux 常見的命令還不會的話,建議還是先看一下 Linux 的入門語法

我好像以前寫過一篇,Linux 的安裝還有詳細入門命令的文章,有興趣可以看一下,想了解更多,可以去度娘一下或者找個教程系統學一下

三 Git 配置和基本理論

(一) 配置

Git 有兩種配置檔案,一種是系統級別的配置檔案,還有一種是使用者級別的配置檔案,且這兩者都儲存在本地上,先看一下如何顯示所有配置檔案內容(注:下面是小寫 L 不是數字1或者 大寫 i)

git config -l

上述就是雜糅在一起的內容,都查出來了,如果想要分別檢視不同的配置檔案,也是有辦法的

# 檢視系統配置
git config --system --list
  
# 檢視當前使用者配置
git config --global  --list

這裡大家可以分別嘗試一下

配置都是存在本地的,那麼檔案的位置在哪裡呢?

  • 系統配置:XXX\Git\etc\gitconfig 例如 D:\develop\Git\etc\gitconfig

  • 使用者配置:C:\Users\使用者名稱\ .gitconfig

    • 注意:別忘記顯示資料夾中的隱藏檔案,否則看不到 .gitconfig

如果是第一次使用,應該是沒有 .gitconfig ,以前如果用過,或者折騰過例如 hexo 等內容,應該都是配過的,例如我這臺機器的 .gitconfig 中的內容如下:

[user]
	name = ideal-20
	email = ideal_bwh@163.com
[i18n]
	commitencoding = utf-8
	logoutputencoding = utf-8
[gui]
	encoding = utf-8

我在其中配置定義了一個 user ,寫入了我的 name 和 email, 這個工作還是非常推薦做的,因為你後面提交內容的時候,就會預設的使用配置,不用填寫了

上面是直接修改檔案的方式,如果想要使用 git 命令配置,則如下:

git config --global user.name "ideal"  #名稱
git config --global user.email ideal_bwh@163.com   #郵箱

其他的一些編碼配置,可以後面根據需要配置也可以

小結:要認識基本配置,最好配置使用者名稱和郵箱作為你這個使用者的標識,命令中如果傳入 --global 也就是告訴 Git 每次預設都用這個內容代表你這個使用者,如果你在某個專案中不想使用這個標識,你可以在專案中再次執行此語句,但是不傳入 --global 就可以了

(二) 基本理論

(1) Git 工作區域

工作區域這個概念是非常重要的,要留心一下

你想從本地上傳一份程式碼到 github,不同的階段下,你想上傳的內容,會處於不同的位置區域中,Git 的工作區域就分為四大塊

  • 工作區(Workspace / Working Directory)

  • 暫存區(Stage / Index)

  • 本地倉庫(Git Directory / Repository)

  • 遠端倉庫(Remote Directory / Remote)

工作區:本地專案檔案存放位置,也就是你放這個專案程式碼的地方

暫存區:暫存字面意思就是臨時存放的意思,這裡用來臨時存放你的改動,雖然叫做 XX區 ,但是本質上只是一個檔案,其中記錄了檔案的名稱、時間戳、長度等內容

本地倉庫:暫存區的內容可以通過命令提交到本地倉庫,所以它存放你提交所有提交版本的資料

遠端倉庫:用來託管程式碼的遠端伺服器,供使用者拉取等操作

若僅僅從使用的角度出發,其實我們更需要關注的點在於工作區和遠端倉庫

雖然到現在,可能對於幾大工作區域還是有點懵,不過稍後提到他們之間的關係,以及一些講解命令,變更當前欲提交程式碼位置的時候,就會明白了

(2) Git 流程 / 區域間關係

上面書寫幾個區域流程的時候,其實已經是按照一定的順序來寫了

Git 工作時執行的流程如下:

  • 先在工作區中新增或者修改一些檔案,說白了就是寫完程式碼,或者修改了舊程式碼
  • 將需要最終提交到 Git 管理的檔案存放入暫存區
  • 暫存區中的檔案提交到本地倉庫中
  • 本地倉庫中的修改推送到遠端倉庫

上面我們介紹的流程,就是圖中從 add 到 commit 到 push 的一個過程,也就是從工作目錄到遠端倉庫的一個過程

上面的一些內容,就是關於專案從雲端拽到本地等等,下面這些命令我們都會提到

下面手把書開始進行 Git 專案的建立,以及如何上傳以及拉取專案

(三) 建立/克隆倉庫

如果你想要在本地上生成一個倉庫,要麼就是直接建立一個新的本地倉庫,要麼就是從雲端可克隆一個遠端倉庫

(1) 本地倉庫的建立

在當前的目錄下了,初始化一個新的倉庫

git init

例如我在桌面的 git-stuty 資料夾中開啟 git-bash

它會提示初始化了一個空的 Git 倉庫在你這個路徑下,同時可以在這個資料夾中,直接看到有一個名為:.git 的資料夾出現,預設會有一些初始化的檔案在其中

(2) 遠端倉庫的克隆

第二個方法就是直接克隆遠端專案,命令為

git clone [url]

其中的 [url] 部分直接替換成在 Github 或者 Gitee 等上面拿到的克隆地址,Github 例項如下

怎麼選擇呢? 一般來說,如果我們是一個全新的專案或者說一個Demo想要上傳到 Github 等這種平臺,就需要在專案目錄下建立一個 Git 倉庫,而如果你想看別人的專案,就直接克隆下來,或者你在別的電腦上想要繼續寫自己的一個遠端儲存的專案,你也可以克隆下來

通常一種做法就是,先在遠端建立倉庫,然後拉取到本地來做

(四) 檔案狀態及忽略檔案

(1) 檔案狀態

等下我們會帶著大家走一遍實操流程,但是我們還需要補充兩個點,因為後面我們實操會用到

  • Untracked:未跟蹤狀態,此檔案還在你的專案資料夾中,但是還沒新增到 Git 倉庫中,所以還不受到版本控制,例如編寫一個 HelloWorld.java 檔案,但是還沒做什麼操作,只有這麼一個檔案而已
    • 最後通過 git add 命令後,狀態變為 Staged
  • Staged:暫存狀態,但還沒有真正入庫
    • 執行 git commit 命令後,會把你修改的內容,和本地倉庫中進行同步,同步後,這時本地倉庫中的檔案和本地檔案又變為一致, 檔案就會變成 Unmodify 狀態
    • 如果想執行取消這種暫存狀態,只需要執行 git reset HEAD filename 命令取消暫存, 檔案狀態會為 Modified
  • Unmodify:檔案已入庫,同時版本庫(.git )中的檔案快照內容與資料夾中完全一致
    • 如果它被修改, 而變為 Modified, 如果使用 git rm 移出版本庫, 則成為 Untracked 檔案
  • Modified: 檔案已修改,不過僅僅是修改,沒有進行其他的操作
    • git add 可進入暫存 Staged 狀態, 使用 git checkout 則丟棄修改過, 返回到 unmodify狀態, 這個git checkout即從庫中取出檔案, 覆蓋當前修改

(2) 忽略檔案

這塊內容,在 IDEA 中應該都有見過,即:.gitignore 檔案,其中的內容,就是我們選擇要進行忽略的檔案,也就是說,這些東西,我們不想納入版本控制中,例如 sql 檔案,或者一些臨時檔案,直接貼了一份規則

說明:這一塊,沒仔細整理,或許是有出入的,想深入瞭解,更推薦去找一份專題的博文

  • 忽略檔案中的空行或以井號(#)開始的行將會被忽略。

  • 可以使用Linux萬用字元。例如:星號(*)代表任意多個字元,問號(?)代表一個字元,方括號([abc])代表可選字元範圍,大括號({string1,string2,...})代表可選的字串等。

  • 如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略。

  • 如果名稱的最前面是一個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略。

  • 如果名稱的最後面是一個路徑分隔符(/),例如 file/ 表示忽略目錄file下的全部內容,不管是根目錄下的/file/目錄,還是某個子目錄/child/file/目錄,都會被忽略

舉個例子:

*.class

#package file

*.war
*.ear

#kdiff3 ignore
*.orig

#maven ignore
target/

#eclipse ignore
.settings/
.project
.classpatch

#idea
.idea/
/idea/
*.ipr
*.iml
*.iws

# temp file

*.log
*.cache
*.diff
*.patch
*.tmp

# system ignore
.DS_Store
Thumbs.db

四 手把手使用 Git

前面該鋪墊的內容基本都扯到了,下面手把手試一試,分為兩種方式,一種是直接使用命令列,一種就是在 IDEA 中使用圖形介面

要說明一下,命令列的方式,並不是僅僅只能在資料夾中使用,更多的情況下,我們一般會把 IDEA 的 terminal 配置我們的 git-bash,這樣,我們在 IDEA 中,編寫或者修改程式碼後,就可以直接通過 Git 命令進行提交,我們下面演示的兩種方式也都是基於 IDEA 的

(一) 使用 GitHub/碼雲

不管怎麼樣,一個 Git 程式碼託管平臺的賬號總是要有的,針對個人來說用的比較多的,還是 GitHub,當然國內的碼雲(Gitee),勝在速度快,GitHub或許就需要使用一些科學的上網方式才能有比較好的速度體驗了,還有一個就是 GitHub 是全英文的,後者則為中文

沒有賬號的小夥伴,註冊一個就好了,下面為了照顧所有童鞋,順便提一下配置 SSH 公鑰

說明:為了快一點,我使用碼雲來進行演示,GitHub 同理

配置 SSH 公鑰,也就是可以幫助我們實現免密碼登入,否則,我們每一次和遠端倉庫進行一些操作,都需要輸入賬號密碼

  • 進入 C:\Users\使用者名稱\.ssh 目錄下
    • 如果沒有用過 ssh 這裡是沒有內容的,需要生成
ssh-keygen -t rsa

ssh-keygen 就是生成公鑰的命令,後面是指定了加密方式,一般這樣寫就可以

執行後,控制檯會顯示一些不規則的圖畫,接著資料夾中會生成兩個檔案

  • id_rsa.pub 和 id_rsa

帶有 pub 字尾的就是代表公鑰,另一個就是私鑰

用編輯器開啟公鑰程式碼,全部複製,接著開啟碼雲中安全設定中的的 SSH 公鑰配置,將公鑰複製進去,它會預設填充標題,這樣就好了

使用SSH公鑰可以讓你在你的電腦和碼雲通訊的時候使用安全連線(Git的Remote要使用SSH地址)

(二) 修改 IDEA Terminal

可以直接在 Idea 裡的Terminal裡面進行 git命令的輸入,當然需要把原先的 cmd 修改為 Git 下的 bash,注意:不要設定為 git-bash 否則只能彈窗使用

做完也可以順便建立一個 readme檔案:$ touch README.md 不過無所謂啦,一般直接在 GitHub 等上也能直接生成

(三) 向遠端倉庫提交程式碼(命令方式)

說明:我把我這邊的執行結果也貼上了,本質命令也就那麼幾句

1、建立專案,或開啟欲上傳專案

2、在下方 Terminal 中執行 git init 進行空倉庫的初始化,如下(別複製 $ 符號啊):

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git init
Initialized empty Git repository in F:/develop/IdeaProjects/temp/git-study/.git/

3、可以使用 git status 檢視當前的狀態,可以看到,可以看到當前還沒提交

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        .mvn/
        mvnw
        mvnw.cmd
        pom.xml
        src/

nothing added to commit but untracked files present (use "git add" to track)

4、使用 git add . 將所有新增或者修改過的檔案新增到暫存區

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git add .
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory
..... 省略

5、add 後可以繼續使用 git status 檢視當前的狀態,可以看到,一下這些檔案就是被新增到暫存區的

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   .gitignore
        new file:   .mvn/wrapper/MavenWrapperDownloader.java
        new file:   .mvn/wrapper/maven-wrapper.jar
        new file:   .mvn/wrapper/maven-wrapper.properties
        new file:   mvnw
        new file:   mvnw.cmd
        new file:   pom.xml
        new file:   src/main/java/cn/ideal/DemoController.java
        new file:   src/main/java/cn/ideal/gitstudy/GitStudyApplication.java
        new file:   src/main/resources/application.properties
        new file:   src/test/java/cn/ideal/gitstudy/GitStudyApplicationTests.java

6、使用 git commit -m "提交資訊" 提交暫存區中的內容到本地倉庫 -m 提交資訊

這個提交資訊,就是你會在遠端倉庫中每次看到的提交資訊,例如:

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git commit -m "first commit"
[master (root-commit) 4c9acbe] first commit
 11 files changed, 735 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .mvn/wrapper/MavenWrapperDownloader.java
 create mode 100644 .mvn/wrapper/maven-wrapper.jar
 create mode 100644 .mvn/wrapper/maven-wrapper.properties
 create mode 100644 mvnw
 create mode 100644 mvnw.cmd
 create mode 100644 pom.xml
 create mode 100644 src/main/java/cn/ideal/DemoController.java
 create mode 100644 src/main/java/cn/ideal/gitstudy/GitStudyApplication.java
 create mode 100644 src/main/resources/application.properties
 create mode 100644 src/test/java/cn/ideal/gitstudy/GitStudyApplicationTests.java

7、像遠端 add git remote add origin 遠端倉庫地址

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git remote add origin git@gitee.com:ideal-20/git-study.git

8、由於是第一次提交,所以需要先將遠端倉庫的內容拉取下來,直接 push會報錯,執行:git pull

9、提交上去:$ git push -u -f origin master 注意:-f 是強制提交,因為可能我們們第一次拉取過後會出現 專案沒有剛才拉取到的新的錯誤,以後不加 -f

效果如下:

(四) 向遠端倉庫提交程式碼(圖形介面方式)

1、首先在左側目錄結構中,右鍵點選專案名,選擇 Git Add

2、接著再次點選右鍵專案名,這次選擇 Commit Directory

這個介面,會顯示變更的檔案,以及讓你輸入需要上傳的提交資訊,如果你之前已經配置過使用者級別的配置資訊,不填寫個人資訊也行,下面是程式碼的比對,右側預設勾著一些檢查的勾選,會增加一些時間,也可以全部取消勾選

3、在上方選單欄中有一項叫做 VCS ,點選後 選擇 Git 然後選擇 Push

4、然後看到了我們剛才 commit 的內容,選擇直接 Push

5、去倉庫看一下,仍然上傳成功了

(五) 補充方式

剛才命令列的方式,我們是在我們建立好的本地 Java 專案中初始化 Git 本地倉庫,然後提交到遠端倉庫,還有一種方式,就是直接克隆遠端的空倉庫下來,例如克隆下一個名為 test 的資料夾,其中含有例如 .git .gitignore 等檔案或資料夾,然後將這些內容全部複製到你的 Java 專案的根目錄下也是可以的

五 分支開發

分支就是指,例如多人開發中,1.0 的版本後,可能會同時開發其他多個版本,就需要的分支的概念,還例如,你在專案中對於一個問題的解決方案還不能保證完美,但你又不想影響正常的內容,所以,你可以在分支上進行開發,而不影響主幹

所以為了不影響別人開發以及主幹的穩定,所以你可以建立一個屬於自己的分支,保證分支上沒有問題了,再合併到主幹上

1、在master上建立分支 v1.0:$ git checkout -b v1.0 origin/master 並且預設使用它

2、將分支推到遠端倉庫:$ git push origin HEAD -u

這樣我們的遠端倉庫中就會多出一個分支 v1.0

3、給這個分支提交一個內容,資訊為第三次提交

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (v1.0)
$ git add .
xxx
$ git commit -m "第三次提交"
xxx
$ git push
xxx

4、準備向 master 主幹合併這個 v1.0,先切換到 master git checkout master

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (v1.0)
$ git checkout master

5、將 v1.0 併入 master,注意,現在已經是在 master下操作了哦

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git merge v1.0

6、Push 上去,origin master 不寫也行,預設就是 master

abc@LAPTOP-5T03DV1G MINGW64 /f/develop/IdeaProjects/temp/git-study (master)
$ git push origin master

你就會發現,master 主幹下已經併入了 v1.0 的內容

說明:提交資訊,出現一個小亂碼,是編碼沒設定好,沒設定的情況下,還是推薦使用英文提示資訊,修改後再根據需要選擇是否提交中文資訊

六 結尾

如果文章中有什麼不足,歡迎大家留言交流,感謝朋友們的支援!

如果能幫到你的話,那就來關注我吧!如果您更喜歡微信文章的閱讀方式,可以關注我的公眾號

在這裡的我們素不相識,卻都在為了自己的夢而努力 ❤

一個堅持推送原創開發技術文章的公眾號:理想二旬不止

相關文章