美文网首页
Git-基础3

Git-基础3

作者: zhulichao | 来源:发表于2020-07-22 09:09 被阅读0次

配置的三个级别

local 针对当前仓库,优先级最高
global 针对当前用户,优先级其次
system 针对系统,优先级最低

四种对象

git 使用40个16进制字符的 SHA-1 Hash 来唯一标识对象,git 有4种对象:

  • blob 文本文件,二进制文件,链接文件,是在代码提交到 Stage 区时根据内容生成的二进制文件
  • tree 目录结构,包括 tree 和 blob,在进行提交时把 Stage 区中的 blob 对象封装在 tree 中
  • commit 存储一次提交的信息,指向一个 tree
  • tag 指向固定的历史提交,可以当做是 commit 的别名

git 只关心文件的内容,如果2个文件有同样的内容,它们会指向同一个 blob 对象,文件名等其它信息会存储在 tree 对象中。

git hash-object [file-name] 查看文件的 hash 码
git cat-file -p [id] 显示仓库中对象的类型、大小和内容信息

工作流程

working directory 工作区,日常编辑代码的地方,维护着一个树形结构
git repository 本地仓库,commit 指向的一个树形结构
staging area 暂存区,.git/index 文件,工作区与本地仓库中间的缓存,维护的是虚拟的树形结构,代表的是需要提交的工作的状态

工作区是我们能看到的区域,我们在工作区修改增加代码,完成编辑后,用 git add 将工作区文件添加到暂存区,然后利用 git commit 提交文件到本地仓库。分支就是 commit 的引用,在这些分支上工作会产生各自的历史,分支切换就是 HEAD 引用的移动以及暂存区和工作区的还原,tag 指向一个固定的 commit。

命令

git add 工作区到暂存区
git commit 暂存区到和本地仓库
git rm [file-name] 删除暂存区和工作区的文件
git rm --cached [file-name] 删除暂存区的文件
git mv [old-name] [new-name] 重命名或移动暂存区和工作区的文件
git status 查看工作区和暂存区的区别
git stash save "name" 将工作区放入 stash 栈中
git stash save -a "name" 将工作区和暂存区放入 stash 栈中
git stash pop --index stash@{0} 还原工作区和暂存区
git stash apply --index stash@{0} 还原工作区和暂存区,不删除 stash 中的索引
git stash drop stash@{0} 删除 stash 栈中的索引
git stash clear 清除 stash 栈中的全部索引
git merge --abort 放弃当前合并操作

查看与对比历史记录

git show 显示 git 对象
git log [--oneline] [--decorate] [--graph] [--all] 查看历史记录
git diff [--color-worlds] [--word-diff] 查看工作区与暂存区的区别
git diff [file-name] 查看工作区与暂存区指定文件的区别
git diff --cached 查看暂存区与本地仓库的区别
git diff [提交hash码或者HEAD] 查看工作区与本地仓库的区别
git diff 提交区hash码A 提交区hash码B 查看两个不同提交的区别
git diff 分支A的某个hash码 分支B的某个hash码 两个不同分支间比较

撤销修改

git checkout [file-name] 从暂存区或本地仓库恢复文件,回到最近一次 git commit 或 git add 的状态
git checkout . 从暂存区或本地仓库恢复所有文件,撤销工作区修改,不改变暂存区
git checkout [commit 引用] [file-name] 还原工作区和暂存区
git reset [file-name] 撤销暂存区文件
git reset . 撤销所有暂存区文件,清空暂存区文件,不改变工作区
git reset [commit 引用] [file-name] 还原暂存区
git clean -n [-X|x] 查看执行 git clean 会清除的文件
git clean -f 清除未跟踪的文件,不包括 gitignore 中指定的文件
git clean -x -f 清除所有未跟踪文件,包括 gitignore 中指定的文件
git clean -X -f 保留 gitignore 之外的文件,清除 gitignore 中指定的文件
git revert [commit 引用] 产生一个新的提交来撤销以前的提交

commit 引用可能是 commitID、branch、HEAD、tag。

重写历史记录

git commit 和 git rebase 参考Git-基础2
git reflog 查看 HEAD 引用的历史
git reset --hard HEAD@{n} 回到指定的历史提交,还原暂存区和工作区
git reset --mixed HEAD@{n} 回到指定的历史提交,只还原暂存区,为默认参数
git reset --soft HEAD@{n} 回到指定的历史提交,不原暂存区和工作区

gitignore 文件

  • 以'#'开始的行,被视为注释
  • 以斜杠“/”开头表示目录
  • 以星号“*”通配多个字符
  • 以问号“?”通配单个字符
  • 以方括号“[]”包含单个字符的匹配列表
  • 以叹号“!”表示不忽略(也就是跟踪)匹配到的文件或目录
  • git check-ignore -v [file|folder] 查找 gitignore 文件中匹配该文件的规则

相关文章

  • Git-基础3

    配置的三个级别 local 针对当前仓库,优先级最高global 针对当前用户,优先级其次system 针对系统,...

  • Git-基础

    最近重新学了一遍Git工具的使用,在此记录一下。 Git是什么? Git是属于分布式版本控制系统,同属于的还有Me...

  • Git-基础命令

    git,对于一个开发者来说是一个经常会接触的知识点。但是自己似乎对于git的命令行使用还了解的不是很透彻,一个很尴...

  • Git-基础1

    常用命令 参考 Git远程操作详解 和 Git教程 which -a git # 查看所有版本的 gitgit -...

  • Git-基础2

    git diff 工作区:就是你在电脑里能看到的目录暂存区:git add 是把文件到暂存区本地仓库:工作区有一个...

  • Git-基础入门

    安装 mac安装:https://git-scm.com/download/mac[https://git-scm...

  • git_chapter2_基础

    Chapter2 基础 参考自 https://git-scm.com/book/zh/v1/Git-%E5%9F...

  • Android Studio git使用小结

    步骤小结: VCS->Import into vc->Create git->变红 项目右击->git->add-...

  • git-分支3

    git push origin 推送分支git remote -v 查看远程仓库信息git checkout ...

  • git_chapter3_分支

    Chapter3 分支 参考自 https://git-scm.com/book/zh/v1/Git-%E5%88...

网友评论

      本文标题:Git-基础3

      本文链接:https://www.haomeiwen.com/subject/ghzuhktx.html