Git 學習筆記(基礎篇)

1. 命令初識

查看GIT版本

git --version

在Global級別設置UserName(推薦使用)

git config --global user.name ’Freud Kang‘ 

在當前目錄界別設置UserName(優先級高)

git config user.name 'Freud Kang'

在Global級別設置UserEmail

git config --global user.email ’[email protected]

初始化一個GIT Repository(倉庫)

git init 

下載遠程代碼倉庫

git clone remote_url

添加file到.git/index空間Staging area

git add ‘file’ 

提交所有修改到Repository

git commit -m ’Commens For Commit‘

講此目錄下所有修改的文件添加到Staging area並提交

git commit -a -m ’Commens For Commit‘

在GIT倉庫中刪除文件

git rm 'file'

(LINUX)sha1 file 查看sha1加密後的文件值(20byte即160bit~2的160次方種情況)


從Repository中檢出在工作目錄丟失或者誤操作的文件。

git checkout -f HEAD  || git checkout -f fileName

查看文件在經過SHA1加密後的字符串

git hash-object ’FileName‘

查看反加密後的文件內容

(BLOB)git show ’SHA1加密字符串(只需唯一標識此字段的前幾位即可)‘ 

 查看反加密後的Tree對象的內容

(TREE)git ls-tree ’SHA1加密字符串(只需唯一標識此字段的前幾位即可)‘

查看反加密後的Commit對象的內容

(COMMIT)git show -s --pretty=raw ’SHA1加密字符串(只需唯一標識此字段的前幾位即可)‘


查看此對象的類型(BLOB.TREE.COMMIT)

git cat-file -t ’SHA1加密字符串(只需唯一標識此字段的前幾位即可)‘

查找此目錄下的FILE類型的文件

find ./git/objects/ -type f 

查找此目錄下Directory類型的文件

find ./git/objects/ -type d

統計FILE類型的文件個數

find ./git/objects/ -type f | wc -l 

給當前最新的commit打一個TAG(輕量級),對象個數不會增加,只是會在.git/refs/tags/tagname文件中添加一個Commit HASH Code的引用

git tag “tag_name” 

 給當前最新的commit打一個TAG(重量級),會在.git/objects下生成一個新的tag對象,並在.git/refs/tags/tagname文件中添加一個tag HASH Code的引用(好處:可以添加更多的註釋)

git tag -a 'TAG_NAME' -m 'Commens'

把某個TAG的源碼打包成爲zip文件,其中目錄爲打包後zip的首目錄。

git archive --format=tar --prefix='目錄' Tag_Name | gzip > 文件名

壓縮文件名  解壓縮文件

tar zxvf 

查看分支,有*的代表當前工作分支

git branch 

創建分支

git branch ’分支名字‘ 

切換到需要活動的分支

git checkout ’分支名字‘ 


從源分支把代碼Merge到本分支

git merge ’源分支名字‘

刪除分支(大寫D代表強制刪除,小寫d代表普通刪除)

git branch -D ’分支名字‘  

改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch -m <old_name> <new_name> 

切換 branch (注意如果你有檔案修改了卻還沒 commit,會不能切換 branch)
git checkout <branch_name> 

本地建立 branch 並立即 checkout 切換過去
git checkout -b <new_branch_name> (<from_branch_name>) 

刪除 local branch
git branch -d <branch_name> 

刪除遠程Branch
git push origin :{branch_name}

檢出一個遠程的Branch

git checkout -b develop origin/develop

2. Git Area(3種空間)

Working directory工作目錄,指沒有添加到GIT Track中的文件,GIT不認識此文件

Staging area階段空間,指添加到GIT的track中但是還沒有Commit過的空間,.git/index指的就是staging area,需要從Working Directory中Add進入此空間

Repository倉庫,指的是本地.git 文件夾下的東西,當Commit之後./git/objects目錄下的對象值得就是此倉庫,需要從Staging Area中Commit進來


3. 對象(Object)一旦修改永遠不可以改變

blob文件對象:不包含文件名,不包含數據大小

tree目錄對象:包含文件名

commit提交對象:包含Tree對象

TAG對象:可以認爲是一個對象或者是引用


4. 引用(Reference)可以動態修改

Branch :master是缺省分支,創建完Branch後會在.git/refs/heads/BranchName下有分支名字的文件,其內容爲所指向的Commit對象40位HASH值

HEAD(永遠指向當前活動的Branch)在.git/HEAD文件中存儲一個引用指向refs/heads/master,此文件中有HASH值即COMMIT對象的HASH值

Remote Branch


5. Merge

Faster-Forward

Three-Way Merge


NOTES:

.git/objects/**/************* 第一個**指的是SHA1加密後的前兩位,第二個指的是後38位


我的GitHub

https://github.com/luoyan35714

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