GIT相關

GIT

侷限性

不要用git管理二進制文件

全部的版本控制系統,其實只能跟蹤文本文件的改動,而圖片、視頻這些二進制文件,雖然也能由版本控制系統管理,但無法跟蹤文件的變化,只能把二進制文件每次改動串起來,例如記錄圖片從 100KB 改爲了 120KB,可是並不知道具體文件改了什麼。git

不要使用git管理word

Microsoft 的 Word 格式是二進制格式,所以,版本控制系統是無法跟蹤 Word 文件的改動的。github

git下不要使用windows自帶的記事本

Microsoft 開發記事本的團隊使用了一個不合理的方法來保存 UTF-8 編碼的文件,他們在每一個文件開頭添加了 0xefbbbf(十六進制)的字符,建議使用Notepad++。算法

命令行再也不贅述

理解工做區 暫存區 分支區

git存在一個.git文件,裏面存儲配置信息和分支,以及一個暫存區
在進行提交時
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;
第二步是用git commit提交更改,實際上就是把暫存區的全部內容提交到當前分支。
而git diff是查看暫存區和工做區(實際文件夾內容)的區別,因此git add後git diff就再也不顯示區分
因此咱們能夠從暫存區、分支區、遠程庫 這三條途徑來還原歷史windows

理解分支管理

分支其實是以圖存儲的,而所謂分支也及時master指針和其餘分支指針的改動,在A、B分支不平行時則直接改動指針完成分支合併,若存在平行段,會要求顯示的指定衝突部分如何肯定。數據結構

理解文件存儲

git中在Objects文件夾存儲組件,並利用hash算法SHA-1根據文件內容組件名,即造成鍵值對管理。
組件分四種:編碼

  1. Commit 分支:
    內有一個tree組件,表明git庫根目錄,下附帶若干對應於庫中文件的blob和tree;內還有commit文件,即指向其餘commit,即分支圖數據結構的指針,新的commit擁有和老commit相同的組件,可是內容改變的部分發生了變換,因此一個blob可能被兩組commit/tree共享
  2. Tree 文件夾:內部有若干記錄,指向不一樣的組件
  3. BLOB 文本:若文本內容沒有改變,則不會新建blob;blob並不存儲文本信息,而是存儲其內容
  4. Tag 標籤命令行

    組件

    Git中存在兩種對象 - 鬆散對象和打包對象。
    簡單的理解就是鬆散對象存儲使用代價低,用來存文件的改變,打包對象代價高用來存儲一系列鬆散對象hash-offset用以組合成文件。
    Git使用SHA-1值的前兩個字符做爲子目錄名字, 因此一個目錄中永遠不會包含過多的對象. 文件名則是餘下的38個字符。版本控制

github

github是基於git的面向開源及私有軟件項目的託管平臺,比較方便的github使用方式是利用github推出的GUI GithubDesktop。指針

相關文章
相關標籤/搜索