IDEA可視化Log理解Git倉庫\歷史狀態\commit\分支


IDEA可視化Log理解Git倉庫\歷史狀態\commit\分支

from:https://github.com/tintinng/advanced-git/tree/master
fork from:https://github.com/hcsp/advanced-git
ref:https://xiedaimala.com/courses

什么是倉庫?

倉庫是指一個歷史可追溯(tracked)的文件集合,可以把該文件集合的任意一個歷史狀態變更看成是一個單位,圖中的一個個小圓點即為該倉庫的某個歷史狀態變更
在這里插入圖片描述

這個歷史狀態變更時如何產生的?

通過commit,每一次commit就會生成一個commit對象,產生一次歷史狀態變更。因此這一個個小圓點也可以看成是一個個commit對象。
在這里插入圖片描述在這里插入圖片描述

如何標識這個歷史狀態變更?

  • Commit對象的SHA-1
  • 分支(branch)
  • HEAD指針
  • tag標簽

什么是分支?分支和歷史狀態變更的關系,分支和倉庫的關系

在這里插入圖片描述

  • 分支是一個指向葉子節點指針每個節點都是一個歷史狀態變更。葉子節點可以理解為最新的歷史狀態變更。
  • 一個分支包括多個歷史狀態變更(節點),可以在本分支的各個歷史狀態變更(節點)中穿梭。
  • 一個倉庫通常有各種分支錯綜復雜,IDEA 可視化log中可以可以查看各個分支之間的關系。單個分支,select幾個分支和所有分支:

在這里插入圖片描述在這里插入圖片描述

各個分支之間有什么關系?

在這里插入圖片描述

  • 多個分支可以合並,產生一個新的歷史狀態變更。例:我正在master分支上,要把fixbug分支上的變更內容合並過來。我(master分支)的歷史狀態變更向前推進一個,fixbug分支還停留在原來的歷史狀態變更上。

git merge fixbug

  • 可以切換當前的工作分支,即從一個分支可以切換到(checkout)另一個分支。切換到另一個分支上工作。

遠程分支和本地分支對應

  • push成功的條件就是遠程分支是我本地分支的父親,意思就是遠程做過的修改(歷史狀態變更/節點)我本地都做過了,所以我可以push成功,否則遠程分支有另外的修改(有分叉)但我本地卻沒有,因此push會產生沖突。通過合並(merge)\解決沖突(solve conflict)后再合並(merge)。
  • 同理,pull(fetch+merge)成功的條件是本地分支是遠程分支的父親。
    在這里插入圖片描述
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM