git

git常用命令速查

基础且实用

Posted by xtong on June 25, 2021

git基础

Git远程操作详解

git设置用户名和邮箱

1
2
3
4
5
6
7
8
9
10
# 设置用户名和邮箱
git config --global user.name "username"
git config --global user.email "useremail"

# 查看用户名和邮箱
git config user.name
git config user.email

# 查看其它配置
git config --list

参考:git配置用户名和邮箱

git设置代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 设置当前代理
git config http.proxy http://127.0.0.1:7890

# 设置全局代理(我在用的)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

# 取消当前代理
git config --unset http.proxy

# 取消全局代理
git config --global --unset http.proxy

# 设置socks5代理
git config http.proxy socks5://127.0.0.1:10809
————————————————
版权声明:本文为CSDN博主「用户昵称不能为空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/default7/article/details/100068256

git获取版本差异打包

  • 某个版本与当前版本的差异
    1
    2
    3
    4
    
    # 完整的commit id
    git diff e3d368f457358a4a39f31f033d6a6f3729df541c --name-only | xargs zip update.zip
    # 或者 简略的commit id
    git diff e177fd68 --name-only | xargs zip update.zip
    
  • 两个版本之间的差异打包
    1
    2
    
    # git archive -o ./update.zip 新 $(git diff --name-only 旧 新)
    git archive -o ./update.zip 5ec3905f6a64ad90ea53803b1ec05a72476e2e1c $(git diff --name-only cb59ee6a13812761067a28ea25a8188f467d47e0 5ec3905f6a64ad90ea53803b1ec05a72476e2e1c )
    

git统计

  • git统计代码行数
    1
    2
    
    # 查看 xtong 在 2010-07-16 到 2019-07-14 之间的代码行数
    git log --since="2010-07-16" --before="2019-07-14" --author="xtong" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'
    
  • 查看所有人代码行数
    1
    
    git log --pretty='%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
    
  • 查看提交排名前5
    1
    
    git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
    
  • 查看开发者人数
    1
    
    git log --pretty='%aN' | sort -u | wc -l
    
  • 查看总提交次数
    1
    
    git log --oneline | wc -l
    

git配置文件

本地项目配置文件,在项目目录下 .git/config 文件 全局,用户目录下 .gitconfig 文件

  • 本地保存密码,在config中
    1
    2
    
    [credential]
          helper = store
    
  • 全局设置vim为默认编辑器
    1
    
    git config –global core.editor vim
    

    Linux下编辑~/.gitconfig文件 在core中添加editor = vim

常用基础命令

  • 获取主机[origin]上的所有分支
    1
    
    git fetch origin
    
  • 版本更新打tag
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    # 创建补丁版本,进行修改
    git fetch origin --tag
    git checkout -b hotfix/<版本号> <版本号>
    # 修改完成发布
    # 1. 合并到master
    git fetch origin master:master
    git checkout master
    git merge hotfix/<版本号>
    git tag -a <发布版本号> -m "发布功能描述"
    git push origin --tag
    git push origin master:master
    # 清理 hotfix
    git push origin :hotfix/<版本号>
    git branch -D hotfix/<版本号>
    
  • 还原删除的分支或commit
    1
    2
    3
    
    # git log --since="2 weeks ago" -- myfile 可以2个星期期间的myfile历史;
    # git log --branches="develop" 可以查看develop的commit
    git branch recover_branch commit_id
    
  • 版本回退
    1
    
    git revert e3d368f457358a4a39f31f033d6a6f3729df541c
    
  • 创建一个git库推送到远端
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    # 可参照github
    git init
    git add .
    git commit -am '创建项目'
    
    echo "# integral" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin git@github.com:tongg112/integral.git
    git push -u origin master
    
  • git提交全局保存密码
    1
    2
    
    # 建议设置ssh key来替代输入密码的方式
    git config --global credential.helper store
    
  • git生成rsa
    1
    
    ssh-keygen -t rsa -C "email"