学习笔记——Git

存储结构

  • 有向无环图

   每个结点即为一次提交状态(快照),包含作者信息和描述信息等。上图简单描述了利用分支进行并行开发新功能和修复漏洞,以及合并分支的过程。合并后,新的提交状态已将漏洞修复且具有新功能。

存储模型

  • 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)
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 学习笔记——Git