Git|青训营笔记

93 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记。 1.命令

(1)设置global邮箱用户名

git config --global user.email "you@example.com"

git config --global user.name "your name"

(2)通过ID看内容

git cat-file -p xxxxxxxxxx

2.Objects

Blob:存储文件内容

Tree:存储文件的目录信息

Commit:存储提交信息,可以对应唯一版本的代码

通过Commit寻找到Tree的信息,每个Commit都会存储对应的Tree ID。

通过Tree存储的信息,获取到对应的目录树信息

从tree中获取blob的ID,通过Blob ID获取对应的文件内容

3.Refs

refs的内容就是对应的Commit ID

git checkout -b:创建一个新分支

git tag:生成tag(标签:指一个稳定版本,指向的commit一般不会变更)

附注标签:特殊的Tag,命令:git tag -a

4.追溯历史版本

Ref指向的Commit可以获取唯一的代码版本

Commit里存有parent commit字段,通过commit的串联获取历史版本代码

5.修改历史版本

commit-amend,修改最近一次commit,commit id会变

rebase:git rebase-i HEAD~3 可以实现对最近三个commit的修改,合并commit/修改具体的commit message/删除某个commit

filter--branch:指定删除所有提交中的某个文件或者全局修改邮箱地址等操作

6.Git GC

git fsck --lost-found:寻找浮空的commit

GC:通过git gc命令,可以删除一些不需要的object

Reflog:记录操作日志,防止误操作导致数据丢失

指定时间:git gc prune=now 指定的是修剪多久之前的对象,默认两周前

1.Git Clone & Pull &Fetch

Clone:拉去完整的仓库到本地目录,可以指定分支,深度 Fetch:将远端某些分支最新代码拉取到本地,不会执行merge操作,会修改refs/remote内的分支信息,如果需要和本地代码合并需要手动操作 Pull:fetch+merge,也可以通过git pull--rebase完成git fetch + git rebase 操作。

2.Git Push

git push origin master:将本地代码同步至远端 git push origin master -f:强制推送

ps:fetch是将代码拉取到本地的远端分支,不会合并到当前分支

3.集中式工作流(Gerrit)

只依托于master分支进行研发活动

a.获取远端master代码 b.直接在master分支完成修改 c.与本地代码合并(rebase),解决冲突 d.提交代码到master

4.分支管理工作流(Git Flow/Github Flow/Gitlab Flow)

Github合作方式 (1)owner创建好仓库以后,其他用户通过Fork的方式来创建自己的仓库,并在fork仓库上进行开发 (2)owner分配权限,在一个仓库开发