git 常用命令
一, git 常用命令
- 按时间来打印 git 的 log 日志,适用于一个分支
git log master..anchor_moments --author=liuzhu --pretty=format:"%an, %ar : %s" --after="2019-06-15" --no-merges > 3.1.18.txt
- 查看 updateAppStoreRate 中比 master 中多提交了哪些内容
git log master..updateAppStoreRate > 3.1.18.txt //(PS: updateAppStoreRate 分支是从 master 分支拉取的)
git log master..updateAppStoreRate --pretty="%cr - %s" --author=liuzhu > 3.1.18.txt -
查看两个标签(Tag)之间的提交
git log v4.0.49.4900...v4.1.0.4913 > 4.1.0.txt
- 回顾自己在项目中遇到的问题,只查看我自己的提交
git log --pretty="%cr - %s" --author=liuzhu --since="2017-08-30">3.2.1.txt
git log --pretty="%cr - %s" --since="2020-06-12">2.7.5.txt
// 22 hours ago - 更改版本号3.2.1.4922 - 查看当前分支的提交内容,并用一行来简洁显示
git log --pretty=oneline // 93b5cfe374a53e4893e4ef7efe4a5b9f3db3fa07 重新编译sdk // 8746811fba949c368937673dc6480ba569b7ffbf 更改版本号3.2.1.4922
- 如果提交了错误的内容, 可以使用 sourcetree 的 "reset 分支名 to this commit" 命令回滚代码, 若不想让同事看到这次提交的内容, 可以使用如下方法:
1. git log : 查看要回滚到的某次提交的 md5值. localhost:pandalive-iOS liuzhu$ git log commit e11ea671f8d1be23e19af25861bac6ea32f9e25e (HEAD -> RainbowGift) Author: 刘著 <liuzhu@panda.tv>.... 2. git reset + md5值 : 回滚到有正确的提交的 md5值 localhost:pandalive-iOS liuzhu$ git reset 5185f23c1ac37fbe390ccd75307f4a7ac7c9fba7 Unstaged changes after reset:.... 3. git checkout * : 丢弃掉刚刚回滚的提交 localhost:pandalive-iOS liuzhu$ git checkout * 4. git log : 查看结果, 果真没有这个提交了
注意: 1. "git reset --hard +md5" 命令可以让当前分支强制切到某一个提交, 看不到已经删除的所有提交记录, 类似于. 2. "git reset +md5" 命令等价于"git reset --mix +md5", 可以观察自己在某个提交后做的所有更改 3. "checkout *" 命令相当于重置没有缓存的所有内容
- 也可以用如下方法:
1. 在没有问题的提交处, 新建分支 A. 2. 删除有问题的分支 B 3. 拉取服务器对应的分支 B. 4. 将从服务器拉取的分支 B 合并分支 A.
- 通过名称模糊查找某次提交,并查看其内容
1 git log --grep=接口 2 git show 50e632a971f997cd16bec10d82783e9c96172576
- 查看当前分支的提交内容和时间,可以用如下命令
1 git log --pretty=format:"%h - %an, %ar : %s" 2 // 93b5cfe37 - wangyuheng, 17 hours ago : 重新编译sdk 3 // 8746811fb - liuzhu, 18 hours ago : 更改版本号3.2.1.4922
1 // 参数意义 2 选项 说明 3 %H 提交对象(commit)的完整哈希字串 4 %h 提交对象的简短哈希字串 5 %T 树对象(tree)的完整哈希字串 6 %t 树对象的简短哈希字串 7 %P 父对象(parent)的完整哈希字串 8 %p 父对象的简短哈希字串 9 %an 作者(author)的名字 10 %ae 作者的电子邮件地址 11 %ad 作者修订日期(可以用 -date= 选项定制格式) 12 %ar 作者修订日期,按多久以前的方式显示 13 %cn 提交者(committer)的名字 14 %ce 提交者的电子邮件地址 15 %cd 提交日期 16 %cr 提交日期,按多久以前的方式显示 17 %s 提交说明
二,经验总结
- 可以通过在本地建立分支,来添加自己的注释.上传公司的代码时,再切到其他分支,避免复制太多的文件,开销太大.(毕竟 push 代码时,是按分支 push 的,就不怕本地分支传到公司服务器.)
- 如果需要强制切换到某个分支时,当前分支有 commit,而且不打算提交到服务器,最好的做法是在当前 commit 创建一个新的分支再切到其他分支,不然的话,在当前分支的 commit 就不会保存.