文章目錄
- 概述
- 下載下傳和安裝
- 常用指令
- 分支
-
- 概述
- 常用指令
- 團隊協作
-
- 概述
- 遠端庫
- 常用指令
- 邀請别人加入團隊
- 跨團隊協作
- ssh免密登入
- IDEA內建Git
-
- 配置忽略檔案
- 配置git程式路徑
- 初始化本地庫
- 添加暫存區、送出本地庫
- 切換版本
- 分支操作
-
- 建立分支&&切換分支
- 分支合并
- 遠端庫
-
- 設定GitHub賬号
- 建立遠端庫
- 推送
- 拉取
- 克隆
- 碼雲Gitee
-
- 概述
- IDEA內建碼雲
-
- 安裝插件
- 常用操作
- 導入GitHub項目
概述
(1)git是什麼?
git是一個免費的、開源的分布式版本控制系統,可以快速高效地處理從小型到大型的各種項目。
git易于學習,占用空間小,性能極快。它具有廉價的本地庫,友善的暫存區域和多個工作流分支等特性。
(2)什麼是版本控制
版本控制是一種記錄檔案内容變化,以便将來查閱特定版本修訂情況的系統。
版本控制其實最重要的是可以記錄檔案修改曆史記錄,進而讓使用者能夠檢視曆史版本,友善版本切換。
(3)集中式和分布式的差別
集中式:
版本庫是集中的存放于中央伺服器的。幹活的時候,先要去中央伺服器裡領取最新的版本,然後在開始幹活。幹完活在将自己的版本上傳到中央伺服器。
缺點就是,一但沒有網或者網絡不好的話,自己寫的東西就很難得傳上去。别人也不能及時的看到。簡單的說就是沒有網就不能使用。
分布式:
分布式版本系統沒有絕對的所謂中央伺服器,每個人的電腦上都有一個版本庫,使用的時候就不需要進行聯網了,直接自己進行修改就行。當多個人進行寫作呢,隻需要把你修改的和同僚修改的進行交換就行。
在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個區域網路内,兩台電腦互相通路不了。是以,分布式版本控制系統通常也有一台充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是用來友善“交換”大家的修改,沒有它大家也一樣幹活,隻是交換修改不友善而已。
差別:
- 分布式每個人的電腦上都可以直接拷貝完整的代碼版本。而集中式隻能拷貝自己需要的。
- 分布式的伺服器挂掉之後,不會影響工作。而集中式的伺服器挂掉之後,根本就沒法進行工作。
(4)工作機制
下載下傳和安裝
(1)去官網下載下傳安裝包
點選跳轉官網
根據你的電腦組態選擇相應的版本
我選的64位 windows setup。
(2)輕按兩下安裝程式,開始安裝
更改一下安裝路徑
保持預設
選擇編輯器,預設是vim,vim是純指令行,使用不太友善,正好我安裝了VSCode,是以我們選擇了VSCode作為預設編輯器。
除了vim,選擇其他第三方軟體作為預設編輯器,需要安裝第三方軟體,然後在環境變量配置軟體的安裝目錄。
選擇初始化新項目的主幹名字,選擇預設
選擇第一個就行
這個也是預設就行
普通使用者選擇第一個就行
配置行尾符号轉換,選第一個就行
配置終端模拟器與Git Bash一起使用,選擇第一個
選擇預設
預設
預設,開啟緩存
實驗室功能,有些功能可能不太成熟,建議不要開啟。
安裝完成
(3)測試
右鍵桌面選擇“Git Bash Here”。
輸入“git --version”檢視版本。
常用指令
指令名稱 | 作用 |
---|---|
git config --global user.name 使用者名 | 設定使用者名 |
git config --global user.email 郵箱 | 設定使用者郵箱 |
git init | 初始化本地庫 |
git status | 檢視本地庫狀态 |
git add 檔案名 | 将檔案送出到暫存區 |
git rm --cached 檔案名 | 将檔案存暫存區删除 |
git commit -m “日志資訊” 檔案名 | 将暫存區的檔案送出到本地庫 |
git reflog | 檢視曆史記錄 |
git log | 檢視詳細的曆史記錄 |
git reset --hard 版本号 | 版本穿梭(回到指定版本) |
(1)設定使用者名和郵箱
第一次使用Git要先設定使用者名和郵箱,打開git bash,輸入如下指令設定使用者名和密碼
git config --global user.name 使用者名
git config --global user.email 郵箱
設定好使用者名和郵箱後,可以進入你的使用者目錄(C槽user檔案夾裡電腦使用者名開頭的檔案夾),在裡面有一個配置檔案“.gitconfig”。
用記事本打開可以在裡邊看到你配置的使用者名和郵箱。
(2)初始化本地庫
随便建立一個檔案夾,然後在檔案夾内右鍵打開git bash,輸入如下指令這個檔案夾就會被初始化為我們的本地庫。
git init
成功初始化後顯示如下資訊:
然後會在我們的目錄下生成一個隐藏檔案夾“.git”,可以進入看一下,結構如下:
HEAD檔案記錄目前指向的分支,什麼是分支後面會說,現在先提一下。
(3)檢視本地庫狀态
初始化本地庫後可以使用如下指令來檢視本地庫的狀态
git status
輸入指令後,結果如下
這有三句話,第一句話說我們目前在master分支;第二句說我們還沒有送出過東西;第三句說我們沒有什麼東西可以送出,也就是我們還沒有檔案,接下來我們建立一個檔案示範一下,如何送出檔案。
(4)建立一個檔案
輸入如下指令會建立一個a.txt檔案并使用VSCode打開
code a.txt
在檔案中編輯一些内容,儲存并退出
然後在我們初始化本地庫的檔案夾中會出現這個檔案。
(5)送出到暫存區
再次檢視本地庫的狀态
可以看到我們建立的檔案a.txt,但是是紅色的,表示還沒有被送出,輸入如下指令會将檔案送出到暫存
git add a.txt
送出後再次檢視本地庫狀态,可以看到檔案變綠了,表示我們已經成功送出到暫存區了。
在暫存區的檔案我們還可以删除(git rm --cached a.txt),因為還沒有送出的本地庫,是以不會生成版本資訊。如果送出到本地庫,就會生成送出記錄,記錄就會永久儲存。
(6)送出到本地庫
送出到暫存區後,輸入如下指令可以将檔案送出到本地庫
git commit -m "第一次送出" a.txt
送出後結果如下
(7)檢視本地庫送出記錄
使用如下指令可以檢視本地庫的送出記錄
git reflog 精簡的曆史記錄資訊
git log 詳細的曆史記錄資訊
結果如下
可以看到送出記錄中有精簡版和詳細版都有一串複雜的号碼,那就是我們送出的每個版本的版本号,後面我們可以通過版本号回到想去的版本。
(8)版本穿梭
版本穿梭就是我們可以回到想去的送出過的指定版本,我們可以将檔案修改後再送出一次
給檔案加上一句話,然後送出到本地庫,再次檢視本地庫的送出記錄
可以看到這次有兩個記錄了,如果我們要回到第一次送出的時候,隻需輸入以下指令
git reset --hard c764516
其中c764516就是我們第一次送出版本的版本号。執行指令結果如下
再次打開a.txt檢視檔案内容
可以看到回到我們第一次送出的版本了。
分支
概述
可以認為分支就是目前工作目錄中代碼的一份副本。使用分支,可以讓我們從開發主線上分離出來,以免影響開發主線。在初始化本地Git倉庫的時候,Git預設已經幫我們建立了一個名字叫做master的分支。通常我們把這個master分支叫做主分支。在這個主分支的基礎上,我們可以建立新的分支、合并分支等功能。
在實際工作中,master主分支的作用是:用來儲存和記錄整個項目已完成的功能代碼。是以,不允許程式員直接在master分支上修改代碼,因為這樣做的風險太高,容易導緻整個項目崩潰,是以我們需要在自己負責開發的分支上進行開發。
常用指令
指令名稱 | 作用 |
---|---|
git branch 分支名 | 建立分支 |
git branch -v | 檢視分支 |
git checkout 分支名 | 切換分支 |
git merge 分支名 | 把指定分支合并到目前分支上 |
(1)檢視分支
使用如下指令檢視目前有哪些分支
結果如下:
目前隻有一個分支master,而我們就是在目前分支下(左邊有*号)。
(2)建立分支
在master的基礎上,我們使用如下指令建立一個新分支,指令如下
git branch branch2
檢視分支
可以看到這次有兩個分支,其中branch2就是我們新建立的分支。
(3)切換分支
使用如下指令切換到branch2分支
git checkout branch2
再次檢視分支
指針已經指向了branch2,再對檔案進行操作就是在branch2分支操作了,不會影響master分支。
(4)修改分支内的檔案
在分支branch2中修改檔案
送出到本地庫
(5)合并分支
先切換回master分支,然後使用如下指令将branch2分支的内容合并到master分支中。
git merge branch2
結果如下
這樣branch2中的内容就合并到master分支中來了。
(6)沖突合并
上面講的合并分支是普通合并,在實際生産中,大部分都是沖突合并,為什麼會産生沖突呢?合并分支時,兩個分支在同一個檔案的同一個位置有兩套不同的修改,這時候,git就不知道選擇哪一個了,就需要我們去手動合并。
接下來示範一下沖突合并。
首先切換到分支branch2中,将檔案修改成如下内容,送出到本地庫
切回master分支,修改檔案成如下内容,送出到本地庫
注意了!注意了!要是我們再進行合并,是無法成功合并,會報錯的,因為我們同時對兩個分支的檔案都做了修改,git不知道要保留那個,是以會報錯。
接下來将分支branch2合并到master分支中,觀察控制台消息
可以看到自動合并失敗了,需要我們手動合并,這時我們打開檔案看看檔案内容
可以看到檔案在同一個位置的修改已經被标記出來,将不需要的删除就行,選擇要留下來的内容
再次将檔案添加到暫存區。
然後将檔案送出到本地庫,注意,這一次送出就不需要帶檔案名了,如果帶檔案名反而送出不成功。
這樣就完成沖突合并了。
注:分支與版本的切換實際是指針指向的改變。在.git目錄中HEAD檔案記錄的就是目前指向的分支,在.git\refs\heads檔案中會有幾個和你的分支名同名的檔案,每一個分支對應一個檔案,每個檔案中記錄的就是該分支指向的版本。
團隊協作
概述
什麼是團隊協作呢,如下:
A建立了一個項目,将項目push到遠端庫,然後B可以将項目clone克隆下來,經過修改後,又将項目push到遠端庫(必須要有A給的權限才能push),然後A就可以将修改好的項目pull拉下來。這就是團隊内協作了,除了可以團隊内協作,也可以跨團隊協作,如下:
這時候不僅A和B可以修改項目,在另一個團隊的C也可以,C先将A遠端庫的内容fork到自己遠端庫,然後克隆到自己的本地庫,修改一番後push到自己的遠端庫,然後A将C遠端庫的内容拉過來進行merge合并。
遠端庫
要有遠端庫,我們要先注冊一個githup網站的賬号。登入賬号後選擇建立一個倉庫(右上角)
填上倉庫的名字,一般取項目的名字就行,然後選擇public公共庫(免費),點選建立就行了。
建立完成後,進入到一個頁面,這個頁面中記錄着我們遠端庫的位址,有HTTPS和SSH兩種類型,記住這個HTTPS的,後面要用。
常用指令
指令 | 描述 |
---|---|
git remote -v | 檢視目前所有遠端庫位址的别名 |
git remote add 别名 遠端庫位址 | 給遠端庫的位址起個别名 |
git remote remove 别名 | 删除别名 |
git push 别名 分支 | 同送本地庫内容到遠端庫 |
git clone 遠端庫位址 | 克隆遠端庫内容到本地庫 |
git pull 别名 分支名 | 将遠端庫對于分支最新的内容拉下來後與本地分支直接合并 |
(1)設定遠端庫别名
前面遠端庫的位址太長了,不太好記,使用如下指令給剛才的遠端庫取個别名。
git remote add demo1 https://github.com/caiheyu/demo1.git
(2)檢視目前所有遠端位址的别名
建立好别名後,檢視一下是否成功
可以看到成功建立别名,為什麼有兩個呢,推送和拉取分别有一個。
(3)推送到遠端庫
使用push指令可以将指定分支上的内容推送到遠端庫,示範一下将master分支推送到遠端庫
git push demo1 master
第一次推送會讓你登入綁定你的賬号,然後就會開始推送,由于githup是國外網站,第一次推送可能會逾時,多試幾次。
出現這個資訊就代表成功了,浏覽器打開遠端庫位址重新整理一下就可以看到檔案被推送到遠端庫了。
注:上傳遠端庫到遠端庫的内容,我們可以在網頁直接打開,也可以在網頁進行修改。
(4)拉取(pull)遠端庫到本地庫
當遠端庫中的内容修改以後,和本地庫中的内容不同,就可以拉取遠端庫的更改的内容到本地庫,指令如下:
git pull 遠端庫别名 分支名
測試:
在網頁修改一下遠端庫内容(模拟遠端庫内容被修改)
在檔案末尾加上一句話,然後回到本地庫目錄,打開git bash,輸入拉取指令。
出現上述結果就證明拉取成功了。
(5)克隆遠端庫到本地庫
将遠端庫的内容克隆到本地庫。指令如下:
git clone 遠端庫位址
注:克隆遠端庫内容不需要登入賬号也能克隆;clone指令會自動幫你初始化本地庫;也會自動幫你為遠端庫位址設定别名,可以自己檢視别名。
邀請别人加入團隊
如果想讓别人也能往你的遠端庫上push代碼,首先你要邀請他成為你的團隊成員。步驟如下:
(1)登入你的githup網站,找到你的遠端庫,點選settings
(2)點選Collaborators
(3)輸入密碼
(4)選擇添加成員
(5)搜尋成員的使用者名,找到後添加到團隊
(6)點選複制邀請連結
(7)将連結發送給成員點選即可
跨團隊協作
跨團隊協作,就需要兩個遠端庫之間的溝通了,需要的請求有fork、pull request、merge操作。
(1)fork操作,拉取别的遠端庫内容到自己的遠端庫
首先打開githup官網
在網站的左上角可以搜尋所有的遠端庫,随便搜尋一個,點選進入到它們的遠端庫。
進入别人的遠端庫,在右上角,有個Fork,點選,就會進入一個界面,引導你建立一個Fork,也就是讓你再建立一個新的遠端庫。
點選“Create fork”即可完成fork操作。
(2)pull request
完成fork操作後,我們就相當于将别人的遠端庫内容複制到自己建立的遠端庫中了,就可以對其進行修改了,就當成自己的遠端庫操作就行了,修改完成後,我們可以發起pull request請求給原先遠端庫的建立者。如下
點選第二個“pull requests”。
(3)merge合并
當我們發送pull request請求後,原建立者會收到我們發送的消息,會在這個“pull requests”顯示,然後可以點進去檢視,可以檢視有哪些改變,并可以選擇與自己遠端庫的内容合并。
ssh免密登入
之前我們拉取和推送都是使用的HTTPS協定,那麼使用SSH和HTTPS有什麼不同呢。主要有如下兩點
- HTTPS:拿到url就可以随便clone,但是在push的時候需要驗證Github的使用者名和密碼;
- SSH:Github 需要添加本機的 SSH key; 如果配置SSH key的時候設定了密碼,在push的時候需要輸入密碼,否則直接push。
簡單來說,ssh使用較為友善安全。
接下來測試如何使用SSH進行推送。
(1)打開家目錄(C槽user目錄下和你使用者名同名的目錄),建立一個目錄名為“.ssh”.。
(2)進入.ssh目錄,打開git bash,輸入如下指令
ssh-keygen -t rsa -C CaiCai
-t指定生成密鑰的算法,-C指定辨別或注釋,可以随意寫。
确認執行後,按三次回車。
(3)運作指令後會在該目錄生成兩個檔案,一個公鑰、一個私鑰。
以“.pub”結尾的是公鑰,用記事本打開公鑰,複制裡邊的内容。
(4)打開githup官網,進行如下設定:
點選右上角頭像->settings->SSH adn GPG keys->New SSH key
Title随便輸一個,将複制的公鑰放在key下。點選添加。
驗證一下密碼。然後就添加成功了,就可以使用ssh進行傳輸了。
(5)設定完成後,打開測試的遠端庫,複制ssh遠端庫位址。
(6)在本地修改檔案後,利用ssh遠端庫位址推送内容到遠端庫。
修改檔案,送出到本地庫,然後使用SSH位址推送到遠端庫
(7)打開遠端庫,檢視檔案内容是否送出成功。
注:ssh遠端庫位址也可以設定别名。
IDEA內建Git
配置忽略檔案
什麼是忽略檔案?為什麼要忽略它們?
就是當我們将項目推送到遠端庫時,要忽略一些檔案不将它們上傳,這些檔案與項目的實際功能無關,不參與伺服器上部署運作。把他們忽略掉能夠屏蔽IDE工具之間的差異。
怎麼忽略?
(1)建立忽略規則檔案“xxx.ignore”。字首名可以随便起,建議是git.ignore。
檔案放在那裡都可以,但是為了便于尋找,建議也放在家目錄下。
(2)配置檔案模闆内容規則如下:
#号表示注釋
*.log表示忽略以log為字尾的檔案,也可以指定某個具體的檔案名,表示忽略這個檔案
要忽略某個目錄或檔案直接寫它的路徑和名稱就行,
!表示取反,即不忽略某個檔案。比如你忽略了某個目錄,在這個目錄中有一個檔案你不想忽略,就可以使用該符号。
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
###############
*.jar
*.war
(3)建立好檔案後,将檔案配置到".gitconfig"檔案中(家目錄下),打開“.gitconfig”檔案,在檔案末尾加上如下格式的内容
[core]
excludesfile = ignore檔案的全路徑
注意,路徑要使用“/”分隔。
配置git程式路徑
打開IDEA,建立一個普通的maven項目,點選settings設定,如下:
點選測試看是否出現你的git版本,然後點選應用、确定。
初始化本地庫
不需要使用git bash中的指令了,直接在VCS中建立倉庫。
添加暫存區、送出本地庫
添加暫存區:
初始化本地庫後,可以看到檔案變紅了,變紅意味着沒有被添加到暫存區。可以右鍵該檔案,選擇如下設定即可添加到暫存區。
送出本地庫:
添加暫存區的檔案就變綠了,變綠是還沒有送出本地庫,接下來示範送出本地庫
選擇送出後,輸入日志,點選送出。
也可以右鍵,将整個檔案夾送出。
切換版本
點選左下角的Git,在裡邊選擇想要回退的版本,右鍵選擇簽出。
分支操作
建立分支&&切換分支
建立分支:
點選右下角的分支名,可以建立新分支
切換分支:
右下角點選分支,選擇想要切換的分支,選擇簽出。
分支合并
切換到主分支,點選其他分支選擇合并到master
如果分支有沖突,會提示我們手動合并
遠端庫
設定GitHub賬号
設定->版本控制->GitHub->添加賬戶
建議選擇令牌登入,點選生成會跳轉網頁
網頁填好後選擇生成token。
複制token粘貼到IDEA就行了。
建立遠端庫
填寫倉庫名,遠端位址别名和描述,點選共享,就會在你的githup賬戶中自動建立一個遠端庫。
推送
可以自定義遠端庫别名,本來是origin,是使用HTTPS推送的,我們可以将倉庫的SSH連結複制下來,定義一個别名。
我定義了一個别名origin-ssh使用的是ssh的連結。
點選推送。
拉取
選擇合并到目前分支,然後就可将遠端倉庫最新的内容拉取到本地。
克隆
建立項目,選擇從VCS擷取。
填寫URL和選擇本地倉庫目錄。
點選确定,即可自動克隆遠端庫代碼到本地。
碼雲Gitee
概述
碼雲是一個國内的代碼托管中心,如果無法使用GitHub,可以考慮使用碼雲。
點選跳轉碼雲官網
要使用碼雲要先新增賬號,使用也和githup網站基本一樣,布局也都挺像。
IDEA內建碼雲
安裝插件
安裝完插件後重新開機,進入設定界面,綁定gitee賬号
同樣也是可以使用賬号密碼登入或者token密碼登入。token需要去網站生成,生成密碼具體步驟如下:
右上角頭像->賬号設定->私人令牌->生成新令牌
寫上描述,點選送出,複制密碼粘貼到IDEA中。
常用操作
建立倉庫
和github基本一樣
推送push
推送和github時一樣,就是選擇遠端位址别名時,自定義一個gitee的位址,選擇gitee的位址推送就行。
拉取pull
拉取和使用github一樣,直接點選拉取圖示。
克隆
和使用github步驟一樣。選擇從VCS擷取。
也可在項目内建立,選擇來自版本控制的項目。
然後,輸入URL時選擇gitee的遠端庫位址
點選确定即可從gitee克隆項目到本地。
導入GitHub項目
可以直接導入GitHub遠端倉庫到Gitee中。
右上角“+”号,選擇“從GitHub/GitLab導入倉庫”。
複制github遠端庫的位址,粘貼到這來,點選導入即可導入成功。
導入成功後,點選倉庫名右邊的符号可以強制更新,就是如果githup倉庫更新内容了,我們可以點選這個符号也更新gitee上的内容。