知乎专栏 |
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ai) %C(bold blue)<%an>%Creset' --abbrev-commit
使用git命令计算文件的 sha-1 值
neo@MacBook-Pro ~ % echo 'test content' | git hash-object --stdin d670460b4b4aece5915caf5c68d12f560a9fe3e4
neo@MacBook-Pro-Neo ~/workspace/devops % git log -- setup.py
diff 风格
neo@MacBook-Pro-Neo ~/workspace/devops % git log -p -- setup.py commit abe282e68ad81e0e72cb8c700ba5c4db87c647a4 Author: neo <netkiller@msn.com> Date: Thu Sep 30 14:07:02 2021 +0800 voice diff --git a/setup.py b/setup.py deleted file mode 100644 index 08f9d08..0000000 --- a/setup.py +++ /dev/null @@ -1,59 +0,0 @@ -import os,sys -from setuptools import setup,find_packages -sys.path.insert(0, os.path.abspath('lib')) -from netkiller import __version__, __author__ - -with open("README.md", "r") as fh: - long_description = fh.read() - -setup( - name="netkiller-devops", - version="0.2.4",
oneline 风格
neo@MacBook-Pro-Neo ~/workspace/devops % git log --pretty=oneline -- setup.py abe282e68ad81e0e72cb8c700ba5c4db87c647a4 voice fda886b0ae1526020c366cea2b747b3ceda18ff6 语音通知 cb2ca23a81b2384b79d7b32bb2e84782bb80edaf 企业微信通知 ac8e573123142a2856d44d13307dd4c46b134ceb fixed logging bug 1c609b9242c8f404ec4bba207dd8c9d836e591d4 docker 增加日志功能
git log --pretty=oneline -- .
git log --oneline -- path/to/folder git log --name-status -- path/to/folder git log --pretty=oneline -- path/to/folder git log -p -- path/to/folder
Neo-iMac:test.netkiller.cn neo$ git log --name-status commit 120f1bb6ff391c6b9b24899804f0292370873485 (HEAD -> main) Author: 陈景峰 <neo@netkiller.cn> Date: Thu Dec 2 04:10:16 2021 +0000 Initial commit A README.md Neo-iMac:test.netkiller.cn neo$ git log --name-status --oneline 120f1bb (HEAD -> main) Initial commit A README.md
Neo-iMac:www.netkiller.cn neo$ git log --name-status --oneline --graph * 7ca7fb7 (HEAD -> main, origin/main, origin/HEAD) sign | M README.md * ba9a9a6 更新.gitlab-ci.yml文件 | M .gitlab-ci.yml * 8af932e 更新.gitlab-ci.yml文件 | M .gitlab-ci.yml * 6fe467b Update app.js | M app.js * a019da0 更新.gitlab-ci.yml文件 | M .gitlab-ci.yml * 65afb8b 更新.gitlab-ci.yml文件 | M .gitlab-ci.yml * 061c78d 更新.gitlab-ci.yml文件 | A .gitlab-ci.yml * 149daf5 Add new file | A app.js * e927196 更新README.md A README.md
格式参数
%H: 标准长度 commit hash %h: 缩短的 commit hash %T: tree hash %t: 缩短的 tree hash %P: parent hashes %p: 缩短的 parent hashes %an: 作者名字 %aN: mailmap的作者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %ae: 作者邮箱 %aE: 作者邮箱 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %ad: 日期 (--date= 制定的格式) %aD: 日期, RFC2822格式 %ar: 日期, 相对格式(1 day ago) %at: 日期, UNIX timestamp %ai: 日期, ISO 8601 格式 %cn: 提交者名字 %cN: 提交者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %ce: 提交者 email %cE: 提交者 email (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %cd: 提交日期 (--date= 制定的格式) %cD: 提交日期, RFC2822格式 %cr: 提交日期, 相对格式(1 day ago) %ct: 提交日期, UNIX timestamp %ci: 提交日期, ISO 8601 格式 %d: ref名称 %e: encoding %s: commit信息标题 %f: sanitized subject line, suitable for a filename %b: commit信息内容 %N: commit notes %gD: reflog selector, e.g., refs/stash@{1} %gd: shortened reflog selector, e.g., stash@{1} %gs: reflog subject %Cred: 切换到红色 %Cgreen: 切换到绿色 %Cblue: 切换到蓝色 %Creset: 重设颜色 %C(...): 制定颜色, as described in color.branch.* config option %m: left, right or boundary mark %n: 换行 %%: a raw % %x00: print a byte from a hex code %w([[,[,]]]): switch line wrapping, like the -w option of git-shortlog(1)
命令演示
git log --since="2023-02-11" --no-merges --pretty=format:"%h %an %ai %s"
neo@Neo-Mac-mini-M4 ~/G/python (master)> git log --diff-filter=D --summary | grep delete deleted: "Netkiller Python \346\211\213\346\234\255.docx" deleted: crawler/__pycache__/requests.cpython-39.pyc delete mode 100644 "Netkiller Python \346\211\213\346\234\255.docx" delete mode 100644 crawler/__pycache__/requests.cpython-39.pyc delete mode 100644 crawler/requests-get.py delete mode 100644 intesting/99.py delete mode 100644 intesting/love.py delete mode 100644 intesting/test.py delete mode 100644 netkiller-2021-02-16.log delete mode 100644 new.docx delete mode 100644 numpy/test.py delete mode 100644 pandas/demo/html.py delete mode 100644 pandas/method/date.py delete mode 100644 pyaudio/client.py delete mode 100644 pyaudio/server.py delete mode 100644 single.py delete mode 100644 test.xlsx delete mode 100644 type/str.py deleted: pandas/demo/doc.html delete mode 100644 pandas/demo/doc.html delete mode 100644 "pandas/\345\233\242\350\264\255.xlsx" delete mode 100644 netkiller.pid delete mode 100644 pandas/dataframe/demo1.py delete mode 100644 terminal/progress-demo.py
neo@Neo-Mac-mini-M4 ~/G/python (master) [SIGINT]> git log --all -- pandas/demo/html.py commit 7af7df5fce170692b6ad35e0c8e52300c4e96bc0 (HEAD -> master, origin/master, origin/HEAD) Author: Neo Chan <netkiller@msn.com> Date: Tue Dec 3 00:37:45 2024 +0800 deleted: "Netkiller Python \346\211\213\346\234\255.docx" deleted: crawler/__pycache__/requests.cpython-39.pyc commit efb002d74f6fd05cc2fdaf1111b431699d4562bf Author: neo <netkiller@msn.com> Date: Thu Apr 4 23:45:54 2024 +0800 modified: pandas/demo/html.py commit bc23e7890c79eac5a79b7d49cb58918dcd22ab40 Author: neo <netkiller@msn.com> Date: Thu Mar 14 17:04:01 2024 +0800 modified: .gitignore modified: .vscode/settings.json modified: pandas/demo/html.py commit 16abfa18f09533884e8594d407a767725d75f455 Author: neo <netkiller@msn.com> Date: Tue Dec 19 16:43:25 2023 +0800 modified: pandas/demo/html.py commit 758edc1210100b64ea60c34f3f38589d670c3ccc Author: neo <netkiller@msn.com> Date: Tue Sep 5 09:14:20 2023 +0800 modified: .vscode/settings.json modified: pandas/demo/html.py commit 631e5b5be42b392f92b90505213fca9db52415d9 Author: neo <netkiller@msn.com> Date: Sat May 27 16:09:39 2023 +0800 deleted: pandas/demo/doc.html modified: pandas/demo/html.py
neo@Neo-Mac-mini-M4 ~/G/python (master) [1]> git log --all --full-history -- pandas/demo/html.py commit 7af7df5fce170692b6ad35e0c8e52300c4e96bc0 (HEAD -> master, origin/master, origin/HEAD) Author: Neo Chan <netkiller@msn.com> Date: Tue Dec 3 00:37:45 2024 +0800 deleted: "Netkiller Python \346\211\213\346\234\255.docx" deleted: crawler/__pycache__/requests.cpython-39.pyc commit efb002d74f6fd05cc2fdaf1111b431699d4562bf Author: neo <netkiller@msn.com> Date: Thu Apr 4 23:45:54 2024 +0800 modified: pandas/demo/html.py commit bc23e7890c79eac5a79b7d49cb58918dcd22ab40 Author: neo <netkiller@msn.com> Date: Thu Mar 14 17:04:01 2024 +0800 modified: .gitignore modified: .vscode/settings.json modified: pandas/demo/html.py commit 16abfa18f09533884e8594d407a767725d75f455 Author: neo <netkiller@msn.com> Date: Tue Dec 19 16:43:25 2023 +0800 modified: pandas/demo/html.py commit 758edc1210100b64ea60c34f3f38589d670c3ccc Author: neo <netkiller@msn.com> Date: Tue Sep 5 09:14:20 2023 +0800 modified: .vscode/settings.json modified: pandas/demo/html.py commit 631e5b5be42b392f92b90505213fca9db52415d9 Author: neo <netkiller@msn.com> Date: Sat May 27 16:09:39 2023 +0800 deleted: pandas/demo/doc.html modified: pandas/demo/html.py
reflog 类似我们软件中的 Undo/Redo ,就像使用 CMD+Z / CMD + SHIFT +Z 一样进行版本的切换和回滚。reflog 日志是保存在本地的,并不会 push 到远程,这就是他与 git log 的区别。
git reflog 与 git log的区别,git log 可以显示所有提交过的版本信息,但不包括已经被删除的 commit 记录和 reset 的操作
git reflog 可以是显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退,常用于恢复本地的错误操作。
git reflog 用法
Neo-iMac:test.netkiller.cn neo$ git reflog 120f1bb (HEAD -> main) HEAD@{0}: reset: moving to 120f1bb 9fcccf0 HEAD@{1}: commit: add tmp string de5ca5d (origin/main, origin/HEAD) HEAD@{2}: reset: moving to HEAD de5ca5d (origin/main, origin/HEAD) HEAD@{3}: pull: Fast-forward 120f1bb (HEAD -> main) HEAD@{4}: clone: from 192.168.30.5:netkiller.cn/test.netkiller.cn.git
回滚到 120f1bb
Neo-iMac:test.netkiller.cn neo$ git reset --hard 120f1bb HEAD is now at 120f1bb Initial commit