图片来源:https://www.pixiv.net/artworks/62905247
Table of Contents
配置(config)
显示当前配置
git config -l
设置全局用户名
git config --global user.name "glaumar"
设置全局邮件
git config --global user.email "[email protected]"
设置vim为默认编辑器
git config --global core.editor "vim"
其他编辑器的设置看这里
克隆(clone)
克隆仓库到指定目录
git clone remote_repocitory path/to/directory
子仓库(submodule)
添加子仓库
git submodule add remote_repocitory path/to/directory
从远程仓库拉取所有子模块
git submodule update --init --recursive
更新所有子模块
git submodule update --recursive --remote
远程仓库(remote)
修改远程仓库连接,HTTPS的仓库连接要求输入用户名和密码,修改为SSH连接自动使用SSH私钥验证身份
git remote set-url origin [email protected]:<Username>/<Project>.git
查看所有远程仓库
git remote -v
暂存(staged)
添加文件到暂存区
git add filename
撤销暂存
git restore --staged filename
丢弃对文件的修改
git restore filename
提交(commit)
覆盖上次提交
git commit --amend
分支(branch)
显示所有本地分支
git branch
显示所有分支
git branch -a
创建新分支
git branch branch_name
切换到另一个分支
git checkout branch_name
# or
git switch branch_name
创建并切换到新分支
git checkout -b branch_name
删除分支
git branch -d branch_name
显示分支详细信息
git branch -vv
推送(push)
推送本地分支到远程仓库
git push repo_name local_branch_name:remote_branch_name
拉取(pull)
拉取并切换到远程分支
git checkout -b branch_name remote_branch_name
标签(tag)
显示所有tag
git tag
切换到指定tag
git checkout tag_name
贮藏(stash)
贮藏现场,获得一个干净的工作环境(会保存modified和staged数据,不会保存untracked文件)
git stash
展示所有已贮藏现场
git stash list
恢复最新贮藏的现场(恢复后删除对应stash)
git stash pop
指定要恢复的现场(恢复后不会删除)
git stash apply stash_name
删除所有贮藏
git stash clear
清理(clean)
清理untracked文件、文件夹
git clean -fd
清理untracked和ignore文件、文件夹
git clean -fxd
日志(log)
显示前n条提交记录,n是数字
git log -n
显示简要每次提交的简要变化
git log --stat
显示显示简要每次提交的详细变化
git log -p
显示分支变化情况
git log --graph
每条记录之显示一行
git log --oneline
只显示某个文件或目录的日志
git log filename/dirname
统计指定用户代码修改数量
git log --author="glaumar" --after="2022-04-16 00:00:01" --before="2022-04-16 12:00:00" --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "增加行数:%s 删除行数:%s 变化总行数:%s\n",add,subs,loc }'
显示一周内所有新增/修改过的文件
git log --since="1 weeks ago" --pretty=format: --name-only | sort -u
帮助手册(help)
常用命令简介
git help
子命令帮助手册
git help child_command
版本切换
回退到指定版本
git reset --hard HEAD
回退单个文件到指定版本
git checkout HEAD my-file.txt
甩锅(blame)
查看修改某一行的最新提交记录
git blame -L 214,214 filename
杂项
列出已修改文件
git ls-files -m
获取当前git仓库根目录路径
git rev-parse --show-toplevel
参考:
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。