Git(一)本地操作

1.Git與SVN的差異

SVN是集中式版本控制系統

只有中央服務器上有版本控制數據庫,其他電腦需要從服務器上CheckOut,做操作的時候需要和中央服務器做交互

Git是分佈式版本控制系統

每臺電腦上本地都有一個版本的Database,速度快,不需要網絡交互,也有一臺中央服務器,僅僅用於其他成員之間的協作


SVN存儲的是與上一個版本之間的差異,我們檢出每一版本代碼的時候,都需要疊加這些差異

Git版本存儲的是當前版本的所有內容,不需要和其他版本進行差異比較之後,進行文件合成,這體現了Git的效率

2.Git的安裝及配置

下載相應操作系統的Git版本進行安裝

配置Git自動完成 https://github.com/git/git

配置Git基本配置,用於顯示這個文件修改之後,提交的作者信息誰


Git配置三個級別及級別排序

git config --system(當前系統)<git config --global(當前用戶)<git config --local(當前倉庫)

Git文檔的查看方式

git config --help/git help config/man git -config

3.Git的基本工作流程

Git用40個16進制字符的Hash唯一標識一個對象

Git四種對象

blob(文本文件、二進制文件、鏈接文件)

tree(目錄)

commit(歷史提交)

tag(指向一個固定的歷史提交)

tag指向commit指向tree對象,而tree又包含其他tree對象和blob對象

commit指向的樹形結構,就代表提交時候工作區的某個狀態,

對這些對象的內容,進行SHA-1 Hash之後,可以得到他們的唯一標識,

Git只關心文件的內容,如果有兩個文件有相同的內容,會指向同一個blob對象,像文件名其他信息會存儲在tree對象中

存儲Git對象的倉庫

獲取倉庫的辦法

git init/git clone

倉庫的種類

裸倉庫:(不帶工作區)bare/no-bare

git三個區域

working directory(工作區,日常編輯代碼的地方,維護一個樹形結構)

staging area(暫存區,存儲一個狀態,存儲的代提交的內容)

history repository(歷史倉庫,是commit指向的一個結構)

working directory state files  staging area  commit  history repository

history repository   check out project  working directory

Git命令

git add

git commit

git status

git rm(從暫存區刪除命令)

git mv(工作區重命名或移動文件,再添加到暫存區)

gitignore(忽略一個工作區的內容,不希望添加到暫存區和歷史區)

4.Git暫存區

維護了一個虛擬的樹結構,代表了下一次需要提交的內容的整體

git add(working directory->staging area .git目錄生成響應的index,每條索引有一個40位的16進制SHA-1 Hash以及對應的文件名,狀態,時間戳)

git  commit(staging area->git對象庫,生成一個commit對象指向頂層對象,master分支指向commit對象)

git rm(刪除工作區和暫存區的文件)

git cache rm(只刪除暫存區的文件)

git rm(工作區文件重命名,索引區,刪除原來的索引,新增一個,文件內容不變,指向同一個對象,

暫存區索引每次更新的時候,暫存區都會重新計算所需要生成的tree對象,等到提交的時候,可以重新生成這些tree對象,提升git的效率)

5.Git本地分支與合併

不同的分支之間,做獨立的各自的工作,無縫的來回進行切換

使用stash保存分支中的內容,切換回來的時候,還原回工作區和暫存區

合併

fast-farword merge test是master的衍生分支,master回直接指向test的分支

non-fast-farword merge test和master,會合併成一個共有的分支

6.查看與對比歷史記錄

git show 查看git 對象

git log 查看git歷史

git diff 查看歷史差異

7.插銷修改

git  checkout 還原工作區,用暫存區的內容覆蓋工作區的內容

git reset 還原暫存區,從歷史提交裏面還原暫存區

git clean 清除還沒有添加到暫存區的文件

git revert 產生一個新的提交覆蓋之前的提交,產生修改,還原工作區裏面的內容

8.重寫歷史記錄

git  commit --amend 產生一個新的提交,用來替換掉當前所指向的提交

git rebase

git reset

git reflog

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章