存盤結構
- 有向無環圖

每個結點即為一次提交狀態(快照),包含作者資訊和描述資訊等,上圖簡單描述了利用分支進行并行開發新功能和修復漏洞,以及合并分支的程序,合并后,新的提交狀態已將漏洞修復且具有新功能,
存盤模型
- type blob (file) = array< byte >
- type tree = map< string , tree | blob >
- type commit = struct{
parents array< commit > ——pointer
author : string
message : string
snapshot : tree ——pointer
利用指標,存盤ID,物件的參考通過ID和Hash值
}
- type object = blob | tree | commit
- objects = map< string , object >
- def store(o):
id = sha1(o) —hash散列
object[id] = o
- def load(id):
retrieve object[id]
- references map< string , string >
常用的基本Git命令
- git init 初始化
- git help 查看幫助資訊
- git status 查看修改狀態
- git add [file] 將檔案加入到staging area暫存區
- git commit -m ' ' 提交并附上描述資訊
- git log 查看歷史提交記錄
- git log --all --graph --decorate (--oneline) 以圖表的形式展示歷史提交記錄
- git cat-file -p [hash值] 查看存盤的物件
- git checkout [hash值/reference名] 作業目錄的狀態切換到該提交時的狀態--改變Head指向
- git diff [file] 查看當前作業目錄自最后一個快照后的變更
- git diff [hash值/reference名] [file] 查看自該提交狀態后所的變更
- git diff [hash值1] [hash值2] [file] 查看后提交狀態相對前提交狀態的變更
- git checkout [file] 放棄當前作業目錄的修改并回到Head指向的狀態
- git branch 查看本地存盤庫中的所有分支(master為主分支)
- git branch -vv 查看分支的資訊
- git branch [new branch名--reference名] 建立新分支且其指向與Head一致
- git checkout [branch名] 切換分支且Head指向當前分支
- git merge [branch名] 若有合并沖突則需要對代碼進行兼容修改后git add再git merge --continue(合并前git checkout master)
- git remote 查看所有遠程源
- git remote add [remote名] [url] 添加遠程源
- git push [remote名] [local branch]:[remote branch] 將本地的存盤庫的當前分支推送到遠程源
- git clone [remote url] [folder name] 將遠程存盤庫的內容復制到本地存盤庫的對應檔案夾下
- git clone --shallow 獲取遠程存盤庫的最新快照到本地存盤庫
- git fetch/pull 獲取遠程存盤庫的更改到本地存盤庫
- vim ~/.gitconfig 修改組態檔 如改user的name=和email=
- git blame [file] 查看誰在何時進行的修改
- git stash 暫存修改
- git stash pop 使用修改
- vim ~/.gitignore 添加git忽略的檔案(如.o .DS_Store)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/340618.html
標籤:Java
