1. 程式人生 > >GIT使用—一些概念

GIT使用—一些概念

git reset 並且 圖片 工作 cnblogs 管理 文件內容 inf 基於

(1)Git版本庫(repository)

一個簡單的數據庫,包括所有用來維護與管理項目的修訂版本和歷史的信息。
Git維護兩個主要的數據結構:

  • 對象庫(object store)—在復制操作時能進行有效復制,用來支持完全分布式VCS的一種技術。
  • 索引(index)—暫時的信息,對版本庫來說是私有的,並且可以在需要時按需求進行創建和修改。

(2)Git對象類型

1、塊(blob)
文件的每一個版本表示為一個塊

2、目錄樹(tree)
代表一層目錄信息

3、提交(commit)
保存版本庫中每一次變化的元數據,包括作者、提交者、提交日期和日誌消息

4、標簽(tag)
分配一個任意的可讀名字給一個特定對象,通常是提交對象

(3)索引

是一個臨時的、動態的二進制文件,描述整個版本庫的目錄結構。
索引捕獲項目在某個時刻的整體結構的一個版本。

工作原理:
作為開發者,通過執行Git命令在索引中暫存變更,索引會記錄和保存這些變更,保障它們的安全直到開發者準備提交。

(4)可尋址內容名稱

Git對象庫被組織及實現成一個內容尋址的存儲系統。每個對象都有一個唯一的名稱,如:0a3071601cc10777e271a952ead46cffba233e24

(5)Git追蹤內容

1、當Git放置一個文件到對象庫中時,它基於數據的散列值而不是文件名,即便兩個文件內容一樣,無論是否在相同的目錄,Git只保存一份塊形式的內容副本。
2、當文件從一個版本變到下一個版本時,Git的內部數據庫有效地存儲每個文件的每個版本,而不是它們的差異。

(6)打包文件

創建一個打包文件,Git首先定位內容非常相似的全部文件,然後為它們之一存儲整個內容,之後計算相似文件之間的差異並只存儲差異。

(7)對象庫圖示

技術分享圖片

技術分享圖片

(8)Git中的文件分類

  • 已追蹤的(Tracked)
  • 被忽略的(Ignored)
  • 未追蹤的(Untracked)

(9)git commit的一些註意事項

git commit --all
-a 或 --all 會導致執行提交之前自動暫存所有未暫存和未追蹤的文件變化,包括從工作副本中刪除已追蹤的文件。

(10)其他使用技巧

查看版本庫文件信息

[root@localhost public_html]# git ls-files --stage
100644 8638631b774c05291d21eb5541aa546d2bd6cf85 0   foo.html
100644 8638631b774c05291d21eb5541aa546d2bd6cf85 0   index.html

將一個文件由已暫存轉化為未暫存

[root@localhost public_html]# git rm --cached index.html

強制刪除文件

[root@localhost public_html]# git rm -f index.html

恢復文件的舊版本

[root@localhost public_html]# git checkout HEAD -- index.html

取消已緩存的內容

[root@localhost public_html]# git reset HEAD -- hello.php

GIT使用—一些概念