Git使用理解

Berwin 2021-09-18 14:55:27 阅读数:411

git 使用 理解

一、Git使用機制

git

git流程圖 Git的區域分為工作區,緩存區,本地倉庫區

工作區: 就是本地開發項目的根目錄

緩存區: 版本庫中設立一個暫存區(Stage or Index),作為用來直接跟工作區的文件進行交互,工作區文件的提交或者回滾首選都是通過暫存區,而版本庫中除了暫存區之外,文件的提交的最終存儲比特置是分支(Branch),在創建版本庫的時候默認都會有一個主分支(Master)。

本地倉庫: 我們在為項目添加本地庫之後,會在工作區生成一個如下圖所示的隱藏目錄“.git”,.git目錄即為當前工作區的本地版本庫

git工作區

  • git add files:把當前工作文件拷貝到暫存區
  • git commit:在緩存區 生成文件快照並 提交到本地倉庫
  • git reset - files:撤銷最後一次 git add files
  • git reset:撤銷所有緩存區文件
  • git checkout – files:把文件從暫存區域覆蓋到工作目錄,用來丟弃本地修改。

其中,reset操作是將暫存區內選中的目標文件從暫存區中丟弃,不影響其他任何區域的文件,等同於一個自刷新的動作

git commit -a

相關命令:

  • git commit -a 連續執行git add和git commit,先把文件從工作目錄複制到緩存區,再把它從緩存區複制到倉庫中
  • git checkout HEAD – files 的過程剛好相反,將工作區和暫存區都同步至當前分支內的狀態,也就是最後一次commit的狀態
  • git diff 查看尚未暫存的文件更新了哪些部分;即當前狀態下工作區和暫存區之間的差异。
  • git diff -cached 查看已暫存文件和上次提交時的快照之間的差异;即當前狀態下暫存區和分支內的差异
  • git diff HEAD 查看未暫存文件與最新提交文件快照的區別;即當前狀態下工作區和分支內的差异

撤銷操作:

  • git commit --amend 撤銷上一次提交,並將緩存區文件重新提交
  • git checkout --file 拉取緩存區文件,並將其替換成工作區文件
  • git reset HEAD --file 拉取最近一次提交到版本庫的文件到緩存區,此操作不影響工作區

撤銷操作

未緩存區轉到緩存區:

  • git add file

緩存區提交到本地倉庫

  • git commit -m

直接從工作區提交到本地倉庫

  • git commit -am(只對已跟踪文件正確,新增文件出錯)

本地庫回退到緩存區

  • git reset –soft hash值
  • git reset -soft origin/master

本地庫回退到文件初始狀態

  • git reset -hard hash值

  • 注意這裏,通常先執行一次fetch,保證本地版本是origin的最新版本,然後再回退。(最厲害的是,這麼操作不會有沖突,直接讓文件變成和origin保持一致)

    • git fetch origin
    • git reset –hard origin/master
    • 特別注意:這麼操作會使你對文件的修改全部消失,還原成最初狀態。
  • (針對上一條情况衍生講解)通常在推送到origin時,先要pull,然後再推送,一般是修改提交了的文件和pull下來的同一個文件產生沖突(所以建議修改代碼前,一定先要pull)

    • git pull

    • git push origin master

緩存區回退到未緩存區

  • git reset -files
  • git reset(撤銷所有緩存區文件)

未緩存區回退到文件初始狀態

  • git checkout - files

緩存區回退到文件初始狀態

  • git checkout head -files

二、Git分支理解

這個功能的作用是,如果我們需要給項目添加一個新的功能,在代碼沒有寫完的情况下,如果提交會導致項目組中其他成員無法使用項目代碼,不提交會有損失項目進度的風險,我們就可以新開一個分支,然後完成功能之後再合並分支。

  • Git中主分支一般是master,HEAD指向的是當前分支,不斷再master分支上提交代碼,master分支也會越來越長
  • 創建一個新的分支other,然後切換到該分支工作,HEAD就會指向other,在other上提交代碼就會導致other越來越長
  • 合並分支就是直接把master指向other當前提交,就完成了合並
  • 沖突

沖突

這種情况下git無法執行快速合並,只能手動解决沖突再提交

解决沖突之後提交

  • 分支常用指令
    • 查看分支 git branch
    • 創建分支 git branch name
    • 切換分支 git checkout name
    • 創建+切換分支 git checkout -b name
    • 合並某個分支到當前分支 git merge name
    • 删除分支 git branch -b name
    • 查看分支合並圖 git log --graph
  • git會用 <<<<<<<=======>>>>>>>標記出不同分支的內容
版权声明:本文为[Berwin]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210918145527238k.html