【Java學習筆記(五十三)】之Git簡介,Git常用命令
本文章由公號【開發小鴿】釋出!歡迎關注!!!
老規矩–妹妹鎮樓:
一. Git
(一) Git與SVN的對比
1. SVN
SVN是集中式版本控制系統,版本庫是集中放在中央伺服器上的,開發人員只能從中央伺服器中下載最新的版本進行開發,開發完畢後,需要將自己開發的程式碼提交到中央伺服器中。
集中式版本控制工具缺點:
伺服器單點故障:當伺服器出現故障時,所有的開發需要等待伺服器的故障排除後才能繼續進行。容錯性很差
2. Git
Git是分散式版本控制系統(Distributed Version Control System,DVCS),分為兩種型別的倉庫:本地倉庫和遠端倉庫。本地倉庫是開發人員自己電腦上的Git倉庫,遠端倉庫是遠端伺服器上的Git倉庫。
當開發人員開發完畢後,可以通過Commit命名將程式碼提交到本地倉庫上;若想將程式碼提交到遠端倉庫中,使用Push推送命令推送到遠端倉庫中;若想從遠端倉庫中下載程式碼到本地倉庫,使用Pull拉取命令;若想直接將遠端倉庫複製到本地,就使用Clone克隆命令。
(二) Git工作流程
Git的工作流程如下所示:
1. 從遠端倉庫中通過Clone克隆程式碼到本地倉庫中。
2. 開發人員從本地倉庫中通過checkout獲取程式碼後進行程式碼修改。
3. 開發人員修改完程式碼後,想要將程式碼提交到本地倉庫中,首先將程式碼Add提交到暫存區,之後暫存區會將程式碼Commit到本地倉庫中。
4. 提交到本地倉庫後,本地倉庫儲存著修改的歷史版本。
5. 當需要將程式碼上傳到遠端倉庫時,可以通過Push從本地倉庫推送程式碼到遠端倉庫中。
6. 若想直接從遠端倉庫中獲取程式碼,則可以通過Pull拉取程式碼到工作區中,不經過本地倉庫。
二. Git程式碼託管服務
(一) 常用的Git程式碼託管服務
通常我們是藉助網際網路上提供的一些程式碼託管服務來搭建Git遠端倉庫,其中比較常見的有GitHub,碼雲,GitLab等。
GitHub是一個面向開源即私有軟體專案的託管平臺,因為只支援Git作為唯一的版本庫格式進行託管,因此命名為GitHub;碼雲是國內的一個程式碼託管平臺;GitLab是一個用於倉庫管理系統的開源專案,使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務。
(二) 使用碼雲進行程式碼託管
1. 建立新倉庫
登入碼雲,建立新的倉庫,每個Git遠端倉庫都會對應一個網路地址,可以店家克隆/下載按鈕彈出視窗,視窗中就是Git遠端倉庫對應的網路地址。
2. 邀請其他使用者成為倉庫成員
專案的開發是由多人共同完成的,為了使多個參與者都有許可權操作遠端倉庫,需要邀請其他專案參與者成為當前倉庫的成員。
三. Git常用命令
(一) 環境配置
安裝完Git後首先要設定使用者名稱和email名稱,每次Git提交時都會使用該使用者名稱和email地址進行驗證。
1. 設定使用者資訊
git config –global user.name “mrwxx”
git config –global user.email hello@wxx.cn
git config 是用於Git配置的命令, --global代表著這是全域性的, user.name代表著使用者名稱稱,user.email代表著email地址。
2. 檢視配置資訊
以列表形式顯示所有的Git配置:
git config –list
顯示單個Git配置:
git config user.name
當我們手動設定完Git的配置後,這些配置資訊會儲存在本地使用者的目錄下,如本地的C:\Users\Mr.wmxx下面,有一個.gitconfig檔案,檔案中儲存著剛剛配置的資訊:
[user]
name = mrwxx
email = hello@wxx.cn
(二) 獲取Git倉庫
獲取Git倉庫有兩種方式,一種是在本地初始化一個Git倉庫,另一種是從遠端倉庫中克隆一個。
1. 本地初始化Git倉庫
在本地初始化一個Git倉庫,就是將本地的一個資料夾作為Git倉庫,在某個資料夾下右鍵進入Git Bash,使用git init命令初始化一個Git倉庫。這樣,該資料夾下會生成一個.git隱藏資料夾。
2. 克隆遠端倉庫
克隆遠端倉庫到本地中,在本地的資料夾下進入Git Bash,使用git clone 命令,後面加 遠端倉庫的地址即可。
git clone https://gitee.com/mrxx/repos.git
(三) 工作目錄,暫存區以及版本庫
1. 版本庫
前面所說的.git資料夾就是版本庫,版本庫中儲存了很多的配置資訊,日誌資訊和檔案版本資訊。
2. 工作目錄(工作區)
包含.git資料夾的目錄就是工作目錄,主要用於存放開發的程式碼。
3. 暫存區
.git資料夾中的index檔案就是暫存區,暫存區用於臨時儲存修改的檔案。
開發人員在工作區進行開發,開發修改後的程式碼通過 git add命令傳到暫存區,再通過git commit 命令提交到版本庫中。
(四) Git工作目錄下檔案的兩種狀態
Git工作目錄下的檔案存在兩種狀態,這些檔案的狀態會隨著Git命令的執行而發生變化。
1. untracked
未跟蹤狀態,說明它未被納入版本控制中。
2. tracked
已跟蹤狀態,說明它已經被Git納入版本控制了,且已跟蹤狀態又分為三種狀態:
(1) Unmodified
未修改狀態,檔案沒有被修改過。
(2) Modified
已修改狀態,檔案已經被修改過了。
(3) Staged
已暫存狀態,檔案已經放入暫存區中、
(五) 本地倉庫操作
1. git status
在工作區中使用git status檢視工作區中檔案的狀態。
使用 git status -s使得輸出結果更加簡潔
2. git add
git add命令將未跟蹤的檔案加入暫存區中,那麼該檔案的狀態就會變為已跟蹤中的已暫存狀態。
git add hello.txt
3. git reset
git reset命令將暫存區中的檔案取消暫存,那麼該檔案的狀態就會發生變化,變為未跟蹤。
git reset hello.txt
4. git commit
要想將程式碼提交到本地倉庫中,必須通過暫存區,即先將程式碼通過git add命令存到暫存區中,再通過git commit命令將程式碼提交到本地倉庫中。
git commit -m “init hello.txt”
-m代表著日誌,每次上傳程式碼到本地倉庫中,必須要寫日誌資訊,如果不加-m,它會彈出一個編輯器讓我們進行編寫。
5. git rm
git rm命令將檔案從工作區中刪除,但是,本地倉庫中的該檔案並沒有被刪除,要想刪除,需要提交到本地倉庫。提交之前我們需要將該檔案新增到暫存區中,有趣的是,使用git rm命令刪除該檔案後,該檔案就自動被新增到了暫存區中,因此我們可以直接使用git commit命令提交就可以了,本地倉庫中的該檔案就被刪除了。
6. .ignore檔案
工作區中有一些檔案是不需要納入Git的管理的,也不希望他們總是出現在未跟蹤檔案列表中,因此,我們可以在工作區中建立一個名為 .gitignore的檔案,在該檔案中列出需要忽略的檔案模式,如下所示:
*.a : 代表著忽略所有的.a格式檔案
!lib.a : 代表著除了lib.a之外
/TODO : 代表著忽略TODO檔案
build/ : 代表著忽略build資料夾下的所有檔案
doc/*.txt : 代表著忽略doc資料夾下的所有txt檔案
doc/**/*.txt : 代表和忽略doc目錄下的所有子目錄的txt檔案
7. git log
通過git log命令檢視日誌記錄,按Enter鍵向下瀏覽記錄,按q鍵 退出到命令列。
(六) 遠端倉庫操作
1. git remote
當一個本地的工作空間和遠端倉庫建立了聯絡後,通過git remote命令檢視已經配置的遠端倉庫伺服器,它會列出指定的每一個遠端伺服器的簡寫,如果已經克隆了遠端倉庫,那麼至少有一個origin,這是Git克隆的遠端倉庫伺服器的預設名字。
想要更加詳細的資訊,可以在git remote命令後面加上 -v,可以顯示遠端倉庫伺服器的地址:
git remote -v
若是想檢視某一個遠端倉庫伺服器的資訊,則使用git remote show 命令後面加上該倉庫的簡寫即可:
git remote show origin
2. git remote add
通過git remote add命令為本地新增遠端倉庫,命令後面首先加上 遠端倉庫的簡寫,然後是 遠端倉庫的地址:
git remote add origin https://gitee.com/mtwxx/repos.git
我們可以為本地新增多個遠端倉庫。
3. git clone
git clone命令負責從遠端倉庫中進行拷貝,Git克隆的是該Git倉庫伺服器上幾乎所有資料(包括日誌資訊,歷史記錄等)。當執行git clone 命令時,預設配置下遠端Git倉庫中的每一個檔案的每一個版本都會被拉取下來。
git clone https://gitee.com/mrwxx/repo.git
4. git remote rm
通過git remote rm 命令移除本地連線的一個遠端倉庫,命令後面跟遠端倉庫的簡稱。這裡只是在本地中移除遠端倉庫的記錄,不會影響到真正的遠端倉庫。
git remote rm origin
5. git fetch
git fetch是從遠端倉庫獲取最新版本到本地倉庫中,不會自動地merge,不會自動合併到本地倉庫中,即不會直接顯示在本地倉庫中。
git fetch origin master
origin是遠端倉庫的簡稱,master是遠端倉庫的分支。
我們還要通過 git merge 來合併程式碼到工作區中,後面接遠端倉庫的分支,如:
git merge origin/master
6. git pull
git pull也是從遠端倉庫獲取最新版本到本地倉庫,但是會自動merge,合併程式碼。
git pull origin master
注意:如果當前的本地倉庫是本地建立的倉庫,且倉庫中存在檔案,此時再從遠端倉庫中拉取檔案時會報錯(fatal:refusing to merge unrelated histories),這是因為原有的檔案與拉取的檔案無法合併。可以通過在git pull命令後新增引數 –allow-unrelated-histories來解決
git pull origin master –allowed-histories-histories
7. git push
通過git push命令將本地的程式碼推送到遠端倉庫中,後面接遠端倉庫的簡寫,以及分支名:
git push origin master
這個操作一般都是在我們對之前下載的程式碼進行修改之後,修改後的程式碼是沒有進入本地倉庫的,因此我們首先要將修改後的程式碼提交到本地倉庫,而提交到本地倉庫首先要存到暫存區,使用git add 新增到暫存區或者 git commit -a命令直接提交到本地倉庫中。在這之後,就可以執行git push命令推送新的程式碼到遠端倉庫了。
(七) Git分支
所有的版本控制系統都有分支,使用分支意味著可以把工作從開發主線上分離開來,以免影響開發主線。Git的master分支不是特殊的,之所以每個倉庫都有master分支,是因為git init會預設建立它。
1. 檢視分支
git branch
列出本地所有分支
git branch -r
列出所有遠端分支
git branch -a
列出本地和遠端的所有分支
2. 建立分支
git branch a
建立a分支
3. 切換分支
我們通過git checkout來切換分支,命令列中會顯示目前使用的分支:
git checkout a
切換到a分支
4. 推送到遠端倉庫分支
將本地的分支推送到遠端倉庫的分支中,如推送到origin倉庫的b1分支中:
git push origin b1
5. 合併分支
通過git merge
命令合併兩個分支,如我們要將b3分支合併到master分支上,那麼,我們需要切換到master分支中,使用git merge b1命令合併分支。如果在兩個不同的分支中,對同一個檔案同一個部分進行了不同的修改,Git就合併它們,會提示檔案衝突。此時我們需要開啟衝突的檔案並修復衝突內容,最後執行git add命令將程式碼存到暫存區中。
6. 刪除分支
若要刪除本地的分支,可以通過git branch -d
後面接分支的名稱來刪除該分支。若在該分支中已經進行了修改,且沒有推送到遠端倉庫中,那麼使用上面的命令並不會刪除分支,因為直接刪除會有丟失修改資料的風險。若堅持要直接刪除,將-d引數改為-D引數即可刪除。
若要刪除遠端倉庫中的分支,可以使用git push origin -d branchName
,origin是遠端倉庫的簡稱,branchName是分支的名稱。
(八) Git標籤
Git可以給歷史中的某一個提交打上標籤,以示重要,人們會使用這個功能來標記釋出節點。標籤指的是某個分支某個特定時間點的狀態,通過標籤,可以很方便地切換到標記時的狀態。
1. git tag
列出已有的標籤
2. git show [tag]
檢視tag資訊
3. git tag [tagName]
新建一個tag標籤
4. git push [remote] [tag]
將標籤推送至遠端倉庫,提交指定tag
如: git push origin v0.1
5. git checkout -b [branch] [tag]
檢出標籤,新建一個分支,將該分支指向某個tag
6. git tag -d [tag]
刪除本地標籤,
7. git push [remote] :refs/tags/[tag]
刪除遠端倉庫的tag,:ref/tags是固定寫法:
git push origin :refs/tags/[tag]
相關文章
- 廖雪峰Git學習筆記1-Git簡介Git筆記
- Git極簡學習筆記Git筆記
- Git 簡單使用學習筆記Git筆記
- git學習筆記Git筆記
- Pro Git 學習筆記Git筆記
- git學習筆記 1Git筆記
- git學習筆記1Git筆記
- git rebase(變基)—— Git 學習筆記 19Git筆記
- Git 的特點—— Git 學習筆記 02Git筆記
- 取得 Git 倉庫 —— Git 學習筆記 04Git筆記
- git checkout 命令詳解—— Git 學習筆記 16Git筆記
- git status 命令總結 —— Git 學習筆記 06Git筆記
- git入門學習筆記Git筆記
- git checkout 和 git reset 的區別 —— Git 學習筆記 09Git筆記
- git學習之git rebaseGit
- git學習常用命令Git
- git cherry-pick 詳解 —— Git 學習筆記 18Git筆記
- git reset 命令詳解(一)—— Git 學習筆記 07Git筆記
- git reset 命令詳解(二)—— Git 學習筆記 08Git筆記
- 20190228 學習筆記——廖雪峰 git筆記Git
- Git和Maven的學習筆記GitMaven筆記
- Git 分支的建立與切換 —— Git 學習筆記 14Git筆記
- Git 的安裝與初次使用 —— Git 學習筆記 03Git筆記
- Git常用簡約筆記Git筆記
- git 學習筆錄Git
- Git簡單學習Git
- 撤銷操作 —— Git 學習筆記 12Git筆記
- Myth 關於Git的學習筆記Git筆記
- git學習之git reflog和git cherry-pickGit
- Git(12)-- Git 分支 - 分支簡介Git
- git checkout 對工作目錄的影響 —— Git 學習筆記 21Git筆記
- Git 的工作區、暫存區、版本庫—— Git 學習筆記 15Git筆記
- 忽略某些檔案 —— Git 學習筆記 05Git筆記
- GIT學習筆記——第一章Git筆記
- gcc簡介(學習筆記)GC筆記
- git 常用命令以及其他使用筆記Git筆記
- Git 使用簡介Git
- Git命令簡介Git