Git:只关心文件数据的整体变化,保存每次更新的文件快照。
基本的 Git工作流程如下所示:
- 在工作目录中修改某些文件。
- 对这些修改了的文件作快照,并保存到暂存区域。
3. 提交更新,将保存在暂存区域的文件快照转储到 git 目录中。
对象
1、Blob对象内容全部是数据,与其他东西完全没有任何关系,如果同一个目录下的两个文件数据内容是相同的话则共享同一个Blob对象。
查看命令:$ git show SHA1值哈希值
- 一个Tree对象包括一串list条目,管理一些“tree”或是“blob,一般表示内容之间的目录层次关系。
查看命令: $ git show SHA1值哈希值
$ git ls-tree SHA1值哈希值(可以查看具体的对象信息,以mode、对象类型、SHA1值和名字排序,表示一个目录树的内容)
Mode位只为644 或 755,git只关心文件的可执行位。
- commit对象只指向一个"tree对象",组成元素:一个tree对象、父对象parent(s)、作者、提交者。本身并没有包括任何信息来说明其做了哪些修改; 所有的修改(changes)都是通过与父提交(parents)的内容比较而得出的。
查看命令:使用--pretty=raw 参数来配合 git show 或 git log
$ git show -s --pretty=raw 参数
对象模型
每个目录都创建了 tree对象 (包括根目录), 每个文件都创建了一个对应的 blob对象,最后有一个commit对象 来指向根tree对象(root of trees)。
标签对象
查看命令: $ git cat-file tag v1.5.0
Linux部分命令:cd cd .. pwd ls/ll touch rm mkdir rm-r mv reset history help exit
查看git配置:git config -l
添加名字:git config --global user.name “name”
添加邮箱:git config --global user.emil “emil”
创建本地仓库:git init
克隆远程仓库:git clone url
查看跟踪文件:git status
添加所有文件至暂存区:git add .
取消缓存:git reset head、git rest head <file name>
反转最近一次提交:git revert --no-commit head
提交暂存区中的内容到本地仓库:git commit -m “消息内容”
提交到远程仓库 git push
列出所有本地的分支:git branch
列出所有远程分支:git branch -t
分支进行push时需要进行:git push -u origin branch
切换分支:git checkout branch
新建分支,但不改变位置:git branch [branch-name]
新建分支,并且切换到该分支:git checkout-b [branch]
合指定分支到当前分支:git merge [branch]
删除分支:git branch -d [branch-name]
删除远程分支:git push origin --delete [branch-name]
Git branch -dr [remote/branch]
导出版本库:git archive --format=zip head>xxx.zip
创建标签: git tag 2.0
查看所有标签:git tag
标签创建branch:git push --set-upstream origin b1.0