Git提交查看
作用 | 命令 | 备注 |
---|---|---|
初始化本地Git仓库 | $git init | - |
工作区(文件)→ 暂存区 | $git add “file_name” | 文件名 |
工作区(修改与新文件)→ 暂存区 | $git add | 提交修改、新文件(不包括删除) |
工作区(修改与删除)→ 暂存区 | $git add --update / $git add -u | 提交修改、删除(不包括新文件) |
工作区(全部)→ 暂存区 | $git add -all- | 提交修改、删除、新文件 |
- | -$git add -A | - |
- | -$git add . | - |
暂存区 → 版本库 | $git commit -m “message” | 备注 |
查看仓库状态 | $git status | - |
查看提交日志 | $git log | 查看所有的commit提交记录 |
查看所有提交详情 | $git show | - |
查看指定提交详情 | $git show “hash_id” | 哈希值ID,git log中获取 |
查看本地操作日志 | $git reflog | 从clone仓库开始,所有本地库操作,q键退出查看 |
查看修改详情 | $git diff “file_name” | 文件名 |
- | $git long --pretty=oneline | 添加后单行简略显示 |
- | $git long --abbrev-commit | 显示commit |
添加子模块 | git submodule add “ssh/http” | - |
拉取最新子模块 | git pull --recurse-submodules | - |
- | git checkout -b “branch_name” origin/“branch_name” | 首次创建切换分支并关联远程分支 |
Git回退撤销
作用 | 命令 | 备注 |
---|---|---|
撤销暂存区修改 | $git reset HEAD “file_name” | 文件名 |
版本回退 | $git reset --hard HEAD^n | n=回退层数 |
$git reset --hard HEAD~1 | n=回退层数 | |
$git reset --hard [commit_id] | 回退版本号 | |
工作区<–版本库(优先)/暂存区 | $git checkout --[file] | 文件名 |
工作区<–版本库(批量) | $ git reset --hard | HEAD |
Git清除操作
作用 | 命令 | 备注 |
---|---|---|
查看将会删除的文件 | $git clean -n | |
删除当前目录下所有没有track过的文件 | $git clean -f | 忽略.gitignore文件指定的文件夹和文件 |
删除当前目录下所有没有track过的文件 | git clean -xf | 不管他是否是.gitignore文件里面指定的文件夹和文件 |
删除指定路径下的没有被track过的文件 | $git clean -f [path] | 路径 |
删除当前目录下没有被track过的文件和文件夹 | git clean -df | |
Git云端仓库 | ||
作用 | 命令 | 备注 |
– | – | – |
本地版本库关联网络版本库 | $git remote add origin [adress] | 仓库地址 |
将网络库下载到本地 | $git clone [adress] | 仓库地址 |
版本库–>网络库 | $git push -u origin master | |
版本库<–网络库 | $git pull | |
查看绑定的远程库 | $ git remote -v | |
删除已有的远程库 | $ git remote rm origin | |
解绑远程仓库 | find . -name “.git” * xargs rm -Rf | 星号为竖斜杠 |
Git分支管理
作用 | 命令 | 备注 |
---|---|---|
创建并切换分支 | $git checkout -b [name] | 分支名,该语句等效于创建+切换 |
查看分支 | $git branch | |
创建分支 | $git branch [name] | 分支名 |
切换分支 | $git checkout [name] | 分支名 |
合并某分支到当前分 | $git merge [name] | 分支名 |
删除分支 | $git branch -d [name] | 分支名,可将-d=>-D以强制删除 |
查看分支合并图 | $ git log --graph --pretty=oneline --abbrev-commit | |
建立本地分支并切换到分支 | git checkout -b [name] | 分支名 |
从远程dev分支上拉取 | git clone -b dev [adress] | ssh地址 |
Git暂离管理 | ||
作用 | 命令 | 备注 |
– | – | – |
保存并暂离当前工作区 | $git stash | |
查看暂离的工作区 | $git stash list | |
恢复暂离工作区 | git stash apply [name] | 暂离区名,单个不填,多个需要 |
删除暂离工作区 | git stash drop [name] | 暂离区名 |
恢复并删除暂离工作区 | git stash pop [name] | 暂离区名 |
Git标签管理 | ||
作用 | 命令 | 备注 |
– | – | – |
在当前分支打上标签 | $git tag [tagname] | 标签名 |
查看所有标签 | $git tag | |
根据版本号打标签 | $git tag [tagname] [commit_id] | 版本号 |
查看标签详情 | $git show [tagname] | |
创建带有说明的标签 | $ git tag -a [tagname] -m [message] [commit_id] | -a指定标签名,-m制定说明文字 |
删除标签 | $ git tag -d [tagname] | |
删除远程标签 | $ git push origin :refs/tags/[tagname] | 删除远程标签需要先删除本地标签 |
推送标签到远程 | $ git push origin [tagname] | |
一次性全部推送 | $ git push origin --tags | |
Git指令别名 | ||
作用 | 命令 | 备注 |
– | – | – |
创建别名 | $ git config --global alias.st status | 接下来就可以使用st代替status了 |
相关文件操作 | ||
作用 | 命令 | 备注 |
– | – | – |
查看文本文件内容 | $cat [file] | 文件名 |
删除文件 | $rm [file] | 文件名 |
修改文件 | $vi [file] | 文件名 |
SSH秘钥 | ||
作用 | 命令 | 备注 |
– | – | – |
创建ssh秘钥 | ssh-keygen -t rsa -C “email@email.com” | |
账户管理 | ||
作用 | 命令 | 备注 |
– | – | – |
全局设置名字 | $git config --global user.name “Name” | |
全局设置邮箱 | $git config --global user.email “Email” |
解决方案
拉取最新代码
$git clone --depth=1 git@git.dev.tencent.com:QDQD/AAKX.git
拉取某个分支最新代码
例:release/1.6.0分支
$git clone -b release/1.6.0 --depth=1 git://serverRepo myRepo
更好的日志展示
$git log --oneline --graph --all
--oneline 压缩模式,精简提交和哈希码 --graph 图形模式, 基于文本格式的历史信息 --all 所有分支历史
查看代码修改以及代码总数
Tips:修改username
$ git log --author=“username” --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’
$ git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
统计项目成员增删代码数
git log --format=‘%aN’ | sort -u | while read name; do echo -en “KaTeX parse error: Undefined control sequence: \t at position 5: name\̲t̲"; git log --au…name” --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’ -; done
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done