302 字
2 分钟
Git 代码片段
使用 SSH 公钥签名 Git 提交
git config --global gpg.format ssh
git config --global user.signingkey /Users/name/.ssh/id_ecdsa.pub
- 在 Github 添加公钥(选择
Signing Key
) git commit -S
包含 submodule
git submodule add GIT_URL RELATIVE_PATH
统计行数
# Usage:# git_lines# git_lines -a author -d dir## Install `gawk` firstfunction git_lines { local name="" local dir="" while getopts "a:d:" arg do case $arg in a) name=$OPTARG ;; d) dir=$OPTARG ;; ?) echo "unkonw argument" exit 1 ;; esac done if [ -z "$name" ]; then name=$(git config user.name) fi if [ -z "$dir" ]; then dir="." fi echo "User [\033[33m$name\033[0m] at [\033[32m$dir\033[0m]" git log --author="$name" --pretty=tformat: --numstat -- $dir | gawk '{ add += $1 ; subs += $2 ; loc += $1 + $2 } END { printf "added lines: \033[34m%d\033[0m, removed lines: \033[31m%d\033[0m, total lines: \033[32m%d\033[0m\n", add, subs, loc }'}
第一行代码
function git_first { echo "Git First" first_commit=$(git rev-list --max-parents=0 HEAD) echo "Hash: [\033[33m$first_commit\033[0m]" echo "Date: [\033[32m$(git show -s --format=%ci $first_commit)\033[0m]" files_changed=$(git show --pretty="" --name-only $first_commit) first_file=$(echo "$files_changed" | sed -n 1p) echo "File: [\033[34m$first_file\033[0m]" first_line=$(git show $first_commit:$first_file | head -1) echo "Line: [\033[35m$first_line\033[0m]"}
将某个文件夹恢复到某个版本
git checkout <commit_id> -- <folder_path>
要查看特定文件的编辑次数
git log --oneline <file_path> | wc -l
在这个命令中,<file_path>
是你想要查看的文件的路径。git log --oneline <file_path>
会列出所有修改过这个文件的提交,每个提交占一行。然后 | wc -l
命令会计算这些行的数量,给出编辑次数。