GIT的基礎用法

什麼是GIT

git是一種版本控制系統,通俗來說,就是幫咱們把文件備份。但git版本控制系統的功能遠不止備份這麼簡單,總的來講它具備以下特色:html

  • 文件緩存
  • 記錄歷史
  • 在緩存之間隨時「穿越」
  • 多端共享
  • 團隊協做

GIT並非惟一的版本控制系統,除了GIT以外,經常使用的版本控制管理系統還有SVN,鑑於他們實現機制的不同,一般咱們稱GIT爲分佈式版本管理系統,SVN是集中式版本管理系統。
那麼分佈式和集中式版本控制系統有什麼不同呢?git

  1. 集中式的須要一臺中央服務器,全部的代碼管理,都交給中央服務器進行管理,一旦中央服務器掛了,就會影響全部的用戶
  2. 分佈式版本控制系統下的每個節點,均可以充當服務器,每一個節點自主管理存放在本節點上的文件。
  3. GIT比SVN的讀取速度更快

git的工做是分區的,經過調用git相關的命令,咱們在每一個區能夠切換,git常有三種區,分別是:github

  • 工做區
  • 暫存區/過渡期
  • 歷史區

工做區就是咱們本地電腦工做中使用的那部分代碼,當咱們使用命令git add命令把代碼添加以後,咱們的代碼就提交到暫存區了,使用了git commit 命令,咱們的代碼就提交到歷史區了。web

相關Linux命令

一、打印當前文件目錄緩存

pwd

二、查看git配置服務器

git config --list

三、配置全局的用戶信息分佈式

git config --globle user.name "mmcai"
git config --globle user.email "xx@126.com"

四、配置當前目錄下git的用戶信息學習

git config user.name "mmcai"
git config user.email "xxx@126.com"

五、初始化git——告訴那個文件夾被git所管理網站

git init

六、遞歸強制刪除文件夾url

rm -rf xxx
-r 遞歸
-f 強制

七、其餘

cd 切換文件目錄
mkdir 在指定目錄下建立文件夾
touch 在指定文件目錄下建立文件
cat 查看文件內容
ls -al 顯示當前目錄下全部的文件內容

八、vi 編輯相關命令

vi <文件名>
i/u 切換到編輯模式
dd 刪除當前行

ESC 退出編輯模式
:wq 保存文件並退出
:q! 強制退出

九、直接把工做區的內容提交到歷史區

git commit -a -m '註釋'
前提條件是,你必須使用git add 命令操做過一次

提交到歷史區

上面咱們說到GIT系統當中有三個區:工做區,暫存區,歷史區,咱們不能跨區操做,必須先把文件添加到暫存區以後,才能提交到歷史區。若是把代碼從工做區提交到暫存區,或者把暫存區的內容提交到歷史區,代碼只是copy了一份存到另外的空間,當前(工做區)當中的內容,不會發生變化。

工做區

當咱們使用git init 命令行支行,咱們當前就處在工做區

git init

暫存區

在工做區下,咱們執行以下命令,就把咱們當前的文件,提交到了暫存區

git add ./-A

既然能添加,固然也能刪除暫存區,使用以下命令,咱們能夠刪除暫存區裏面的內容

git rm --cached 文件名

歷史區

使用命令git commit 就把文件從暫存區

git commit -m '描述你這次提交到歷史區作的修改'
-m 參數不能省略,必須填寫

日誌

查看git提交到歷史區的歷史狀態,最新提交的內容在日誌的最上面展現

git log

狀態

查看當前git所在那個區?工做區,暫存區,歷史區

git status

文件比較

一般爲了查看每一個區的內容有何不一樣,咱們能夠經過git diff命令來實現,咱們上面知道,git有三個區,因此比較的狀況也會分爲幾種狀況:

  1. 工做區和暫存區比較
  2. 工做區和歷史區比較
  3. 暫存區和歷史區比較
git diff 工做區和暫存區比較
git diff <master> 工做區和歷史區比較
gif diff --cached 工做區和暫存區比較

撤銷

當咱們工做區的代碼,不當心或者寫的比較不理想的狀況下,咱們想把本次修改的內容進行撤銷的時候,GIT能夠幫我實現。撤銷分幾種狀況:
一、從暫存區回滾
二、若是暫存區也是須要回滾的,須要從上一層暫存區進行回滾
三、若是不當心提交到歷史區,須要從上一層歷史區中進行回滾

從暫存區回滾:

git checkout .

從暫存區的上一層進行回滾

git reset HEAD .
git checkout .

從歷史區的上一層進行回滾

git reset --hard <版本號,版本號經過git log查看>
該操做會把工做區和暫存區所有覆蓋

若是從歷史區的上一層回滾以後,想再次回到以前的歷史區怎麼辦?

git reflog 
查看所有日誌,獲取版本ID
git reset --hard <版本ID>
只要你知道版本ID,你就可使用git reset 回滾到任何版本

.表示當前目錄下的全部文件

分支

分支的使用一般會有如下幾種狀況:

  1. 線上有bug的時候
  2. 基於當前項目的另一個有不一樣邏輯的項目copy
  3. 多人開發

查看分支

git branch

建立分支

git branch <分支名>

切換分支

git checkout <分支名>

建立並切換分支

git checkout -b <分支名>

刪除分支

git branch -D <分支名>
刪除分支時,用戶不能在當前分支上

當您在一個分支下建立了新的文件時,若是沒有把文件提交到歷史區,全部的分支下都能看到該文件。同時當你在一個分支下對文件進行了修改以後,在你沒有把它提交到暫存區或者歷史區以前,你切換分支會提示不容許,這個時候能夠經過以下命令實現切換

git stash 暫存文件

git stash pop 還原暫存文件

工做流程是:分支1(沒有提交到暫存區或歷史區)——> git stash 暫存文件——>分支2——>git stash pop——>分支1

分支合併
合併分支的時候,確保當前分支時主幹,不然,就把主幹合併到了其它分支上去了

git merge <分支名>

查看分支狀況

git log --graph --online

遠程倉庫

雖然git是分佈式的,但咱們每每仍是須要一箇中央服務器,這個服務器的主要任務能夠理解成是咱們的代碼倉庫。這個倉庫咱們叫作遠程倉庫,一般咱們用github或者國內的gitee。上面咱們說git當中有三個區:工做區,暫存區,歷史區。遠程倉庫只會保存咱們歷史區當中的內容,因此,你的代碼git commit 命令以後,才能推送到遠程倉庫當中。

遠程倉庫配置

要想把代碼提交到遠程倉庫,通常咱們須要有遠程倉庫相關的帳號,並且要設置相關的祕鑰。

添加遠程倉庫

git remote add <origin(別名)> <url>

刪除遠程倉庫

git remote rm <別名>

直接設置遠程倉庫

git remote set-url <別名> <url>

查看遠程倉庫地址

git remote -v

拉去線上代碼

git pull

克隆遠程倉庫到本地

git clone <url>

推送到遠程倉庫

git push -u origin master 

-u 設置默認推送的主機,下次推送的時候,不用寫倉庫的名字,能夠直接提交

gh-pages

在GitHub當中,咱們建立一個gh-pages的分支,能夠發佈咱們的靜態頁面,做爲咱們項目的一個介紹網站。
咱們能夠在github倉庫的設置裏面,找到GitHub Pages 主體,查看咱們項目可被訪問的web靜態頁面的url地址。

注意

  • 爲了控制咱們本地的代碼,那些能夠被提交,那些事須要忽略的,咱們須要添加一個.gitignore
  • git不會上傳空的文件夾,但咱們能夠再文件夾當中添加一個.gitkeep文件,把空文件夾提交上去
  • 好的項目,一般會給項目添加標籤,說明咱們項目當中使用了那些技術,或者是什麼類型的
  • issue 若是對一個項目有問題,能夠在這裏給做者留言

代碼fork-pull

github上面,看到一個比較不錯的項目,想要copy到本身的倉庫,能夠經過fork的操做,把別人倉庫裏面的項目,克隆到本身遠程倉庫當中。當你以爲別人的代碼寫的很差的時候,能夠經過pull requests 把你的代碼提交到fork的項目當中。

結束

以上內容,算是個人學習筆記,初次以外,涉及到git的問題,可能還有不少,好比說想把一個項目同時提交到兩個倉庫(GitHub和gitee),解決衝突等,但願有機會咱們能一塊兒討論討論。

一臺電腦,兩個及多個git帳號配置

相關文章
相關標籤/搜索