配置信息
查看用户名和邮箱地址:
git config user.name
git config user.email
修改用户名和邮箱地址
git config --global user.name "xxxx"
git config --global user.email "xxxx"
生成密钥
ssh-keygen -t rsa -C "email"
按3个回车,密码为空。
基础操作
命令 | 说明 |
---|---|
git diff | 查看修改信息 |
git diff filePath | 查看文件变动信息 |
git add . | 添加所有修改 |
git checkout filename | 撤销此文件的修改 |
git checkout . | 撤销所有未提交的修改 |
git commit -m "提交信息" | 提交代码 |
git commit | 进入vim界面添加提交信息(比较详细) |
git push | 上传提交到服务器 |
log操作
命令 | 说明 |
---|---|
git log | 查看提交历史记录 |
git log --oneline 或者 git log --pretty=oneline | 以精简模式显示 |
git log --stat | 显示文件更改列表 |
git log --author= 'name' | 显示某个作者的日志 |
git log -p filepath | 查看某个文件的详细修改 |
git log -L start,end:filepath | 查看某个文件某几行范围内的修改记录 |
git log --stat commitId 或者 git show --stat commitId | 查看某一次提交的文件修改列表 |
tag相关命令
命令 | 说明 |
---|---|
git tag | 列出所有的tag |
git tag name | 打轻量标签 name |
git tag -d name | 删除本地的tag |
git push origin --delete tag name | 删除远程的tag |
git show name | 查看tag信息 |
git push origin name | 将tag提交到远程 |
隐藏与恢复
命令 | 说明 |
---|---|
git stash | 把当前的工作隐藏起来 等以后恢复现场后继续工作 |
git stash list | 查看所有被隐藏的文件列表 |
git stash apply | 恢复被隐藏的文件,但是内容不删除 |
git stash drop | 删除文件 |
git stash pop | 恢复文件的同时 也删除文件 |
git stash clear | 删除所有保存的信息 |
分支操作
命令 | 说明 |
---|---|
git branch | 查看本地分支 |
git branch -a | 查看本地和远程分支 |
git branch -vv | 列出本地分支和对应的远程分支及最新一条提交日志 |
git checkout -b branch_name | 添加新分支 |
git checkout branch_name | 切换本地分支 |
git branch -d branch_name | 删除本地分支,如果有为合并代码则删除失败 |
git branch -D branch_name | 强制删除本地分支 |
git push origin --delete branch_name | 删除远程分支 |
仓库操作
命令 | 说明 |
---|---|
git remote -v | 远程仓库路径查询 |
git remote add origin(本地版本库) url(远程仓库地址) | 添加远程仓库 |
git remote rm origin(远程仓库名) | 删除远程仓库 |
git remote rename old_name new_name | 修改仓库名 |
git remote add origin url(远程仓库地址) git push -u origin master |
上传到服务器 |
搜索
命令 | 说明 |
---|---|
git log --grep="commit提交的关键字" | 搜索相关信息列表 |
reset 命令
命令 | 说明 |
---|---|
git reset HEAD^ | 回退所有内容到上一个版本 |
git reset HEAD^ filename | 回退 filename 文件的版本到上一个版本 |
git reset commitId | 回退到指定版本 |
git reset --soft HEAD | --soft 参数用于回退到某个版本 |
git reset --hard HEAD | --hard 参数撤销工作区中所有未提交的修改内容,并删除之前的所有信息提交 |
补丁操作
命令 | 说明 |
---|---|
git diff > 0001.patch | 针对已修改的文件生成patch |
git diff Test.java > test.patch | 针对Test.java的修改信息生成patch |
git format-patch HEAD^ 或 -1 | 生成最近的1次commit的patch |
git format-patch commitId1...commitId2 | 生成两个commit间的修改的patch(生成的patch不包含commitId1) |
git format-patch -1 commitId | 生成单个commit的patch |
git format-patch commitId | 生成从commitId以来的修改patch(不包含该commitId) |
git format-patch --root commitId | 生成从根到commitId提交的所有patch |
git apply --stat 0001-.patch | 查看patch的情况 |
git apply --check 0001-.patch | 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上 |
git apply xxx.patch | 打补丁到项目中 |
git apply --reject xxx.patch | 强制打补丁 |
统计
查看个人代码量
git log --author="username" --pretty=tformat: --numstat | awk '{ add += 2; loc += 2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -统计个人某个时间段提交的代码量
git log --author="name" --since=2022-01-01 --until=2022-02-01 --pretty=tformat: --numstat | awk '{ add += 2; loc += 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 "name" --pretty=tformat: --numstat | awk '{ add += 2; loc += 2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done提交统计
git log --oneline | wc -l提交者排名前3
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 3