git的使用记录
2021-01-21, updated 2021-12-19
记录git的使用方法
git log
- 查看每次提交的diff
|
|
- 查看filename相关的commit记录
|
|
- 查看某个人的提交记录
|
|
- 查看变更文件
|
|
- 查看每次提交的简略统计信息
|
|
git show命令
git show
命令用于显示各种类型的对象。
使用方法
|
|
描述
显示一个或多个对象(blobs
,树,标签和提交)。
- 提交,它显示日志消息和文本差异。它还以
git diff-tree --cc
生成的特殊格式呈现合并提交。 - 标签,它显示标签消息和引用对象。
- 树,它显示的名称(相当于使用
git ls-tree
和--name-only
选项)。 - blobs,显示了普通的内容。
该命令采用适用于git diff-tree
命令的选项来控制如何显示提交引入的更改。
示例
以下是一些示例
- 显示标签v1.0.0,以及标签指向的对象
|
|
- 显示标签v1.0.0指向的树
|
|
- 显示v1.0.0指向的提交的主题
|
|
- 显示Documentation/README文件的内容,它们是next分支的第10次最后一次提交的内容
|
|
- 将Makefile的内容连接到分支主控的头部
|
|
git reset命令
撤销没有push的commit
|
|
HEAD^的意思是上一个版本
git commit命令
提交修改内容
|
|
git修改commit注释 已提交但并未push
只需要修改最新的一次commit注释
之后执行git commit --amend
, 之后便可以利用vim来进行编辑,编辑之后注释为create new file 2 after change。(vim可按i键进入编辑模式,esc退出编辑模式,ZZ保存并退出。更多操作可查阅vim相关资料)
git rev-parse
获取完整commit id(如:bb4f92a7d4cbafb67d259edea5a1fa2dd6b4cc7a)
|
|
获取short commit id(如:bb4f92a)
|
|
git clean
首先确认要删除的文件 git clean -fd -n
如果以上命令给出的文件列表是你想删除的, 那么接下来执行
git clean -f -d或者git clean -fd就可以了。
其中-f表示文件 -d表示目录, 如果还要删除.gitignore中的文件那么再加上-x (-x对我来说没用)
如果git submodule中也存在需要删除的文件那么需要再加个-f, 变成git clean -dff
|
|
其它杂项
windows 平台git版本升级
|
|
使用中遇到的问题
Git error: unable to stat just-written file…
解释
无法统计刚刚写入的文件。
解决
文件名不被允许使用,给文件重命名即可。
tip
本次出错原因:windows 不能命名 con.png 另:由系统保留的设备名字不能用作文件名 CON,PRN,AUX,CLOCK$,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1
问题
git status中文文件名编码问题解决
在默认设置下,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码。
通过将git配置变量 core.quotepath 设置为false,就可以解决中文文件名称在这些Git命令输出中的显示问题,
|
|
Git如何合并某一次commit的内容到指定分支
Cherry pick 支持一次转移多个提交。
|
|
上面的命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交。
如果想要转移一系列的连续提交,可以使用下面的简便语法。
|
|
上面的命令可以转移从 A 到 B 的所有提交。它们必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。
注意,使用上面的命令,提交 A 将不会包含在 Cherry pick 中。如果要包含提交 A,可以使用下面的语法。
|
|
示例
将分支dev1的某一次提交合并到dev2分支
|
|
将分支dev1的多次提交合并到dev2分支
|
|
参考链接: https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html