天天看點

git基礎使用(個人了解和筆記)

Git的基礎使用

回想起初次使用git是在大二下學期上課的時候,老師給我們推薦的版本管理系統…一直到現在還是處于非常懵*的狀态

git的初始化

git config --global user.name "nameString"
git config --global user.email "emailString"
           

使用 :

git config --list

就可以看到剛剛設定的使用者名和郵箱名了

那麼git記錄的是什麼呢?

答案: 将每個版本獨立儲存(空間換時間),壓倒性其他版本關系系統

這裡開始我們要有一個概念:

三棵樹

分别是:

  1. 工作區

  2. 暫存區

  3. Git倉庫

那麼git的工作流程是怎麼樣的呢?!

  • 在工作目錄中添加,修改檔案
  • 将需要進行版本管理的檔案放入暫存區中
  • 将暫存區的檔案送出到git倉庫上

    這就是Git的主要的三部曲

示範

  1. 建立一個檔案夾(第一棵樹)

    建立一個GitProject的檔案夾
    mkdir GitProject
               
    接着往裡面增加一些檔案随便都可以。
  2. 添加檔案到暫存區(第二棵樹)

    添加單一的檔案,也可以添加多個檔案

    一次性添加所有檔案

    git add . / git add *
               

    成功添加到暫存區之後是沒有提示的。

    是以說沒有提示就是最好的提示

  3. 送出到git倉庫

    送出指令

    送出之後會有相應的提示資訊。

    檢視送出過的記錄

    git log
               
    這裡後面可以帶部分參數
    –decorate 顯示送出的所有引用(包括分支的)
    –all 顯示所有分支
    –oneline 一行顯示一個快照(縮略顯示)
    –graph 圖形化的顯示分支情況
  4. Git 管理檔案的三種狀态

    • 已修改(modified)
    • 已暫存(staged)
    • 已送出(commited)
  5. 檢視git目前的狀态

    git status
               
  6. 撤銷檔案/恢複檔案

    reset指令
    ​ reset指令會更改

    head

    指針的指向
    1. 将最近一次送出到git倉庫的檔案恢複到暫存區中

      這裡預設是–mixed的模式,這裡沒有更改

      head

      指針的指向還是指向最新的快照
    2. 将最近一次送出到git倉庫的檔案恢複到暫存區中并且更改

      head

      指針的指向

      這裡同樣也是–miexed的模式,但是這裡更改了

      head

      的指向,指向了上一個快照。

      對比上一條指令

      git reset HEAD <file>

      HEAD後面多了一個~ , 那麼也就是說。想要更改

      head

      指針的指向。

      可以對

      head

      進行一些操作
      更改

      head

      指針,指向上上個快照
      以此類推

      head~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      **也可以這樣做 : **

      head

      指針指向上(1,2,3,4,num)個快照

      reset指令的選項

      git reset --mixed HEAD~
                 
      這是預設的(影響兩棵樹)
      • 移動

        HEAD

        的指向,将其指向上一個快照
      • HEAD

        移動後指向的快照,復原到暫存區

        (影響倉庫區和暫存區)

      git reset --soft HEAD~
                 
      • 移動

        HEAD

        的指向,将其指向上一個快照

        (這裡隻影響倉庫區域,不會影響暫存區)。隻是單單的改變

        head

        指向而已
      • 相當于撤回上一的**

        commit

        **操作
      git reset --hard HEAD~
                 
      • 移動

        HEAD

        的指向,将其指向上一個快照
      • HEAD

        移動後指向的快照,復原到暫存區
      • 将暫存區的檔案還原到工作目錄

        (硬着來,直接還原指定的快照。有風險)

      復原到個别檔案
      git reset HEAD 版本快照	檔案名
                 
      這一步

      head

      指針不會改變

      也就是說git log裡的日志還是有的。

      往復原,當然也可以往前滾(隻要你記住了快照ID)
      git reset 版本快照的ID
                 

      注意(預設是–mixed)模式

      復原的檔案放到暫存區,可以

      check

      指令拉回來,後面說check

      也可以直接使用

      --hard

      模式
      檢視曆史所有記錄
      git reflog
                 
  7. 版本比較

    這裡個人覺得用指令進行比較,有點眼花。

    是以不怎麼說:

    具體指令:

    比較暫存區和工作區

    比較兩個曆史快照

    git diff 快照ID 快照ID
    
               
    • 快照ID隻需要5位上下就可以了。不用全部都輸入進去
    比較 目前工作目錄快照 和 git倉庫中的快照
    git diff 快照ID
    
               

    比較 目前工作目錄快照 和 最新git倉庫中的快照

    比較 暫存區 和 git倉庫快照

  8. 修改最後一次送出

    執行帶

    --amend

    選項的

    commit

    送出指令,git就會更正最近的一次送出。

    此時不會産生新的快照

    此時會進入到修改送出說明的界面:

    • i 表示

      insert

    • 儲存退出:

      esc

      後,

      shift+z+z

    • 不希望修改的話:

      q!

      回車就可以了
  9. 删除檔案

    • 隻是删除工作目錄和暫存區的檔案
      git rm 檔案名
      
                 

      也就是取消跟蹤,下次送出時不納入管理

      -f 強制删除 —>

      --force

    • 删除暫存區檔案,保留工作區檔案
      git rm --cached/--staged 檔案名(*/.)
      
                 
  10. 重命名

    git mv 舊檔案名 新檔案名
    
               
    如果直接更改工作區的檔案名,暫存區就會顯示檢測到被重命名的那個檔案被删除了。并且新增了一個重命名後的檔案。實質上他們兩個檔案是同一個檔案。隻是git沒有那麼智能化,不能自動識别
  11. 建立分支和切換分支

    建立分支
    git branch 分支名
    
               
    切換分支
    git checkout 分支名
    
               
    • 每個分支都有自己的作用域,也就是每個分支都是獨立的,做任何修改都不會影響到其他分支

    合并分支

    ​ 最終分支工作完成後,那麼就需要合并分支,交由master分支上線了~

    git merge 分支名
    
               
    • 合并該分支到目前分支上,是以合并分支前,務必确認好再操作
    快捷方式
    git checkout -b 分支名
    
               

    意思:建立并切換到分支

    删除分支

    git branch -d(--delete) 分支名
    
               

    匿名分支

    也就是說沒有分支名的分支

    git branch
    
               
    直接進入沒有名字的分支,同樣具有自己的作用域。不過當切換到其他分支後,該分支上做過的操作都會消失,不過也可以安裝

    git

    提示把這個匿名分支給予它名字,轉換成一個正常的分支
  12. checkout 指令

    checkout指令和reset指令很相似
    • checkout指令功能

    将處于暫存區的檔案還原到工作目錄
    git checkout --<file> ...
    
               

    将原檔案恢複到工作目錄

    也就是說暫存區恢複的檔案會覆寫工作區的檔案

    切換分支

    git checkout 分支名
    
               
  13. checkout和reset差別

    • reset

      後面帶檔案時,不能使用

      --hard

      --soft

      模式。也就是說,隻能将檔案恢複到暫存區
    • checkout

      則是覆寫暫存區和工作區

    checkout從曆史快照(暫存區)中拷貝檔案到工作目錄

    将會将上一個快照中的file檔案複制到工作區和暫存區中