git 的個人理解

2021-10-07 07:25:10 字數 1395 閱讀 4478

所有內容均為自己理解的,可能會有些錯誤或偏差,歡迎指正

分布式的版本控制系統,即每個人本地都是乙個完整的版本庫。git主要是對檔案的修改進行跟蹤記錄,通過提交(commit)將這些修改「打包」放入本地倉庫。

git中的大部分的指令都是圍繞這幾個概念展開的,只要明白這些基本概念才能理解其他命令都是這做了什麼

工作目錄(working directory)
我們直接修改的檔案,展現給我們看到的檔案就是工作目錄

暫存區(index/stage)
我們將工作目錄的一些修改先新增(add)到乙個固定區域,這個區域就是暫存區

倉庫(repository)
將暫存區修改的資料一起「打包」成乙個提交(commit)後就會存放到倉庫裡

頭指標(head)
每次提交都會生成乙個hash值(以下統一用「版本號"代稱這hash值),每個版本號的生成都是基於乙個父版本號的(特殊情況除外),而head 就是指向這個父版本號的,所以每次提交都會與head指向的版本號對比,如果有衝突就會讓處理衝突

版本號與head
正常情況下head 是指向當前分支的,而當前分支又指向當前分支最後的版本號,所以head最終總是指向版本號的,當head沒有通過分支指向版本號時有乙個特殊的叫法」頭指標分離「(detached head)

git add
將工作目錄的修改新增到暫存區,這裡的修改走向是從工作目錄 ——>暫存區

git commit
將暫存裡的修改提交至版本庫,這裡的修改被」打包「生成乙個版本號並存入倉庫,且head指向剛剛生成的版本號,如果git add 是將工作目錄的所以修改都新增到暫存區的話,此時工作目錄,暫存區,倉庫資料一致

git reset
reset有三類指令

git reset --soft [版本號] head 指向該版本號,影響在提交時是基於該版本號為父版本的

git reset [版本號] head 指向該版本號,且暫存區和該版本號一致

git reset --hard [版本號] head 指向該版本號,且暫存區和工作目錄與該版本號內容一致

git checkout
checkout我個人認為翻譯稱檢出很合適,檢出什麼,從**檢出,檢出到**去,檢出的目的地總是工作目錄,但是從**檢出,可以是暫存區也可以是倉庫。

git stash

關於git的個人理解

1.關於git的個人理解 1.沒有絕對 倉庫的概念,也就是說每次clone 的物件,push的物件都可以認為是 倉庫 2.tortoisegit是git的客戶端,它代替了命令列命令 3.tortoisegit是如何與git建立聯絡的?1.安裝git之後,配置環境變數 2.安裝tortoisegit,...

git專案開發分支策略的個人理解

通過對git的使用和理解,慢慢發現git的優勢和不足,或許也不能叫不足,只是我想要的功能他還沒有實現,又或者人家實現了,愚笨的我沒有發現怎麼使用。現在對git的理解記錄下來 git使用的專案型別 相容性專案開發 在實際的專案開發中,通常會遇到兩種型別的專案,一種是相容性專案,一種是不相容專案 相容性...

關於git命令一些個人理解

對於git reset hard 版本號 如果工作區新增了乙個檔案,那個檔案不會被刪除,因為沒有add過,不能對它追蹤。同樣,假如工作區新增了新檔案,如果git reset 版本號 再git checkout 新檔名 是會報錯的,也是沒有追蹤那個新檔案。這個時候如果git status,會顯示有新檔...