Git

图片来源:https://www.pixiv.net/artworks/62905247

配置(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 国际许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注