Git簡介以及簡單使用

Git簡介

我們都知道Git是用來做版本控制的,那麼到底什麼是Git,如何使用Git。下文記錄着我的學習過程。

我們先了解幾個常用的概念:

  • 版本控制(version control):在我們日常開發過程中,總是要對文件做出修改,每次修改後的文件,就相當於一個新版本,而把這一次次修改的文件記錄下來,可以對新版本、舊版本進行操作,就是所謂的版本控制。

  • 版本控制系統:用來記錄一次次版本,並可以對其進行操作的系統。主要分成了三類:

    • 本地版本控制系統:相當於對每個版本做一個快照,適合個人開發。
    • 集中版本控制系統:將所有版本數據同一放在中央倉庫中,用戶同步更新。例如SVN

在這裏插入圖片描述

  • 分佈式版本控制系統:每個人的版本都存放在本地中,通過push,pull等操作上傳/拉取到本地。Git就是分佈式版本控制系統
    在這裏插入圖片描述

既然Git是分佈式版本控制系統,他存放數據的倉庫就不僅僅只是一箇中央服務器了,我們還要知道有關Git的幾個概念

遠程倉庫:例如github、碼雲等都屬於遠程倉庫,用來存放每個版本數據的數據的

本地倉庫:每個開發者從遠程倉庫中拉取下來版本的數據,開發者對文件等進行了修改,用於存放開發者自己修改的數據。

暫存區:修改的數據還未提交到本地倉庫,只是放在一個類似緩存的地方存放,這個地方就是暫存區

工作目錄:當前開發者正在工作的目錄

下面是我們瞭解一下git的工作流程,如圖:

在這裏插入圖片描述

我們第一次進行開發時,先要將遠程倉庫的數據克隆(clone)到本地倉庫,有時需要創建單獨的分支進行開發,我們需要進行創建或切換(checkout)分支,但通常不用。在日常開發中,通常是先將遠程倉庫中的數據拉取(pull)下來,然後日常改bug,寫業務,當完成一個模塊的修改時,將修改的內容添加(add)到暫存區,再提交(commit)到本地倉庫,一天的開發結束後,推送(push)到遠程倉庫。


下面就是乾貨了,記錄了Git的使用和常用命令

Git 支持多種數據傳輸協議。下面介紹兩種:

  • SSH 協議

架設 Git 服務器時常用 SSH 協議作爲傳輸協議。 因爲大多數環境下服務器已經支持通過 SSH 訪問 —— 即使沒有也很容易架設。 SSH 協議也是一個驗證授權的網絡協議;並且,因爲其普遍性,架設和使用都很容易。

1、生成ssh公鑰(一路回車即可)

ssh-keygen -t rsa -C "[email protected]" 

2、進入.ssh文件中

一般位於c盤下user中,是一個隱藏文件

3、在gitee或github上添加公鑰

將.ssh文件中的 id_rsa.pub文件中的內容複製到公鑰中
在這裏插入圖片描述
4、驗證是否鏈接成功

ssh -T gitee.com

Hi "你的名字"! You've successfully authenticated, but GITEE.COM does not provide shell access.
  • HTTPS 協議

HTTPS 協議又是智能 HTTP,他的運行方式和 SSH 及 Git 協議類似,只是運行在標準的 HTTP/S 端口上並且可以使用各種 HTTP 驗證機制, 這意味着使用起來會比 SSH 協議簡單的多,比如可以使用 HTTP 協議的用戶名/密碼授權,免去設置 SSH 公鑰。

獲取Git倉庫

在執行git之前,我們首先要設置用戶名和郵箱,否則會報錯Please tell me who you are.

git config --global user.name YourName
git config --global user.email YourEmail
  • 將尚未進行版本控制的本地目錄轉換爲 Git 倉庫
git init  //初始化倉庫,會創建一個.git文件
//---------下面的命令後面會解釋------------
git add .   
git add LICENSE
git commit -m 'initial project version'
  • 從其它服務器克隆一個已存在的 Git 倉庫
git clone https://gitee.com/xxxx/dxxxxe.git
/*--修改了文件--*/
git add .
git commit -m "ces"
git push origin master //可能需要輸入密碼

配置Git的忽略文件.gitignore

/node_modules   提交時忽略node_modules目錄

本地Git的常用指令

1、查看

  • 查看Git配置
git config -l
  • 查看當前文件狀態
git status
  • 查看文件不同
git diff  //對比工作目錄中當前文件和暫存區域文件之間的差異。修改之後還沒有暫存起來的變化內容。
git diff --staged //比對已暫存文件與最後一次提交的文件差異:
git diff --cached  //暫存區和上一個版本的差異
git diff head //本地和上一個把版本的差異
  • 查看歷史提交的版本信息
git log //會按時間先後順序列出所有的提交,最近的更新排在最上面,q鍵退出
  • 查看本地所有分支的所有操作記錄(包括刪除的以及reset的內容)
git reflog 

2、添加

  • 將修改內容添加到暫存區
git add index.css index.html //將index.css,index.html添加到暫存區 
git add . //將所有文件加入緩存區,不包括忽略文件
  • 提交到本地倉庫
git commit -m "添加的註釋"

3、刪除

  • 移除暫存區的文件(remove等同於rm)
git remove README.md //移除README.md文件。並連帶從工作目錄中刪除指定的文件
git rm --cached README.md //僅僅從暫存區中移除README.md文件,而不從工作目錄也刪除掉
  • 重新提交
git commit --amend //重新提交,回直接替換掉原來的提交
  • 撤銷提交
git checkout -- index.html
//請務必記得 git checkout -- <file> 是一個危險的命令。 你對那個文件在本地的任何修改都會消失——Git 會用最近提交的版本覆蓋掉它。 除非你確實清楚不想要對那個文件的本地修改了,否則請不要使用這個命令。
  • 取消暫存git reset HEAD <file>...
git reset HEAD CONTRIBUTING.md
  • 版本回退
git reset --hard HEAD^ 		//一個尖角號回退一個版本
git reset --hard HEAD~2 	//回退兩個版本
git reset --hard number 	//回退到指定版本,number是指定id,reflog可以查看

遠程倉庫Git常用命令

1、查看

  • 查看遠程倉庫url
git remote -v //會顯示需要讀寫遠程倉庫使用的 Git 保存的簡寫與其對應的 URL。(fetch拉取地址,push推送地址)
  • 查看某個遠程倉庫git remote show <remote>
git remote show //查看所有
git remote show origin //查看origin的具體信息

2、添加遠程倉庫

  • git remote add <shortname> <url>
//現在你可以在命令行中使用字符串 origin1 來代替整個 URL。 
git remote add origin1 https://gitee.com/xxxx/xxxx.git  
  • git fetch <remote>
//這個命令會訪問遠程倉庫,從中拉取所有你還沒有的數據。 執行完成後,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合併或查看。
git fetch origin1

3、拉取遠程倉庫

git pull origin master

4、推送到遠程倉庫git push <remote> <branch>

git push origin master//當你想要將 master 分支推送到 origin 服務器時

5、遠程倉庫的重命名與移除

git remote rename
git remote rename origin1 org  //想要將 origin1 重命名爲 org
git remote remove org  //移除org

Git分支常用命令

1、創建分支

git branch dev  //查看所有分支列表

2、切換分支

git checkout dev //切換分支到dev

創建一個分支並切換到創建分支上

git checkout -b dev //創建dev分支並切換到dev分支
/*------相當於---------*/
git branch dev
git checkout dev

3、查看每一個分支

git branch -v //查看每一個分支的最後一次提交

4、刪除分支

git branch -d dev //刪除dev分支 

5、合併分支:將dev分支合併到master分支上

git checkout master//切換到master分支
git merge dev  //合併dev分支

案例:

你突然接到一個電話說有個很嚴重的問題需要緊急修補。 按照如下方式來處理:

  1. 切換到你的線上分支。
  2. 爲這個緊急任務新建一個分支,並在其中修復它。
  3. 在測試通過之後,切換回線上分支,然後合併這個修補分支,最後將改動推送到線上分支。
  4. 切換回你最初工作的分支上,繼續工作。
實現
git checkout master //切換到主分支
git checkout -b solvePro //創建一個分支
git commit -a -m 'bug is solved' //修改bug後提交
git checkout master //再切換到主分支
git merge solvePro //將solvePro合併到主分支上
git branch -d solvePro //因爲已經用不到該分支了,所以我們刪除掉該分支
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章