git的使用记录

2021-01-21, updated 2021-09-12

记录git的使用方法

git log

  1. 查看每次提交的diff
git log -p filename
  1. 查看filename相关的commit记录
git log filename
  1. 查看某个人的提交记录
git log author="username" filename
  1. 查看变更文件
git log --raw
  1. 查看每次提交的简略统计信息
git log --stat

git show命令

git show命令用于显示各种类型的对象。

使用方法

git show [options] <object>...

描述

显示一个或多个对象(blobs,树,标签和提交)。

该命令采用适用于git diff-tree命令的选项来控制如何显示提交引入的更改。

示例

以下是一些示例

  1. 显示标签v1.0.0,以及标签指向的对象
git show v1.0.0
  1. 显示标签v1.0.0指向的树
git show v1.0.0^{tree}
  1. 显示v1.0.0指向的提交的主题
git show -s --format=%s v1.0.0^{commit}
  1. 显示Documentation/README文件的内容,它们是next分支的第10次最后一次提交的内容
git show next~10:Documentation/README
  1. 将Makefile的内容连接到分支主控的头部
git show master:Makefile master:t/Makefile

git reset命令

撤销没有push的commit

git reset --soft HEAD^

HEAD^的意思是上一个版本

git commit命令

提交修改内容

git commit -m "change log" filename

git修改commit注释 已提交但并未push

只需要修改最新的一次commit注释
之后执行git commit --amend, 之后便可以利用vim来进行编辑,编辑之后注释为create new file 2 after change。(vim可按i键进入编辑模式,esc退出编辑模式,ZZ保存并退出。更多操作可查阅vim相关资料)

其它杂项

windows 平台git版本升级

git update-git-for-windows

使用中遇到的问题

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 config --global core.quotepath false

Git如何合并某一次commit的内容到指定分支

Cherry pick 支持一次转移多个提交。

git cherry-pick <HashA> <HashB>

上面的命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交。

如果想要转移一系列的连续提交,可以使用下面的简便语法。

$ git cherry-pick A..B 

上面的命令可以转移从 A 到 B 的所有提交。它们必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。

注意,使用上面的命令,提交 A 将不会包含在 Cherry pick 中。如果要包含提交 A,可以使用下面的语法。

$ git cherry-pick A^..B 

示例

将分支dev1的某一次提交合并到dev2分支

git checkout dev2  
git cherry-pick 62ecb3 

将分支dev1的多次提交合并到dev2分支

git checkout dev2  
git cherry-pick 62ecb3 62ecb6

参考链接: https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html

words: 1157 tags: git