Git相关概念
在例举常用命令之前,先简单复习一下 git对象类型
git对象类型
块(blob)
文件的每个一个版本表示一个块(blob - binary large object)。一个blob保存一个文件的数据,但不包括文件的元数据,比如文件名
目录树(tree)
一个目录树对象代表一层目录信息。它记录blob标识符、路径名和在一个目录里所有文件的一些元数据。
提交(commit)
一个提交对象保存版本中每一次提交的元数据,包括作者、提交者、提交日期。每一个提交对象指向一个目录树对象。
标签(tag)
一个标签对象分配一个任意的且人类可读的名字给一个特定对象。通常是一个提交对象。
常用命令
git init
初始化一个版本库.
find .git/objects/ 存放所有git对象的目录,最开始是空的
git init
git cat-file 查询对象数据
- git cat-file -h 查看帮助
- git cat-file -t [对象名] 查看对象类型
- git cat-file -p [对象名] 查看内容
git log 查看历史
- git log [-p | --patch] [-number] 每次提交所引入的差异 [number 最近几次提交]
- git log --stat [-number] 总结性查询提交记录
- git log --graph [-number] 以图形显示分支与合并历史
git stash 贮藏变更
stash 可以将未完成的修改保存到一个栈上, 然后可以在任何时候重新应用这些改动
- git stash list 查看所有储藏栈上的记录
- git stash push -m 'your desc' 添加记录到栈上
- git stash [ pop | apply ] [栈名- stash@{0}]
pop是取出栈里数据
apply只是使用,栈中的记录还在
git-reset
当你想要撤销一个commit 你可以这样使用
git reset commithash撤销到当前commithash的提交git reset HEAD^撤销当前提交 以上操作是只是撤销commit操作,并未撤销add操作,所以当前更新代码还在,如果你想彻底撤销 可以加--hard将连add操作也撤销。
如果你只是想修改commit内容 可以使用git commit --amend命令。
git cherry-pick
不知在开发过程中,老铁们有没有遇到这种情况,错把 A 分支的代码提交到 B 分支,那这时你想把代码重新提交到A 分支时,你可以在A分支上执行git cherry-pick 刚提交的hash或者B(分支名-代表B分支最新一次提交) 命令, 就可以把刚才提交的代码转移到A分支上。当然如果你想撤销B分支的提交,可以先 git checkout B 切换到B分支,然后执行 git reset --hard HEAD^
git ls-files -s 显示文件信息
显示有关索引和工作树中文件的信息
git tag
创建,列出,删除或验证使用GPG签名的标记对象
git rev-parse
- git rev-parse [对象名] 根据对象名前缀查找散列值
使用场景
把代码修改到错误分支上
在多分支编程的情况下,经常把代码添加到错误分支,这时在想切回正确的分支时会报错。这时你可以这样操作
先存到贮藏区: 【stash 处理跟踪文件或暂存文件】
git add.
git stash
切回分支后在从贮藏区取出
git stash pop
感谢
欢迎留言指正! 内容持续更新!