【Git笔记】Git常用命令

常用

关于Git配置

# 查看当前git环境详细配置
git config -l
# 查看系统config 配置文件在git安装目录/etc/gitconfig
git config --system --list
# 查看当前用户配置 配置文件在~/.gitconfig
git config --global --list
# 配置文件在当前项目的/.git/config
git config --local --list
# 查看所有的配置以及它们所在的文件
git config --list --show-origin
# 查看当前分支(详细)
git config --lis
git config [--local][--global][--system] section.key value
# 设置全局名称
git config --global user.name "Your Name"
# 设置全局邮箱
git config --global user.email "email@example.com"
# 设置当前项目的用户名
git config --local user.name xxxx 
#  配置当前用户的编码项,可以解决中文编码问题
git config --global core.quotepath false
#  配置当前项目不忽略文件大小写,git默认忽略文件名的大小写,这点值得注意
git config --local core.ignorecase false 
# 设置git默认文本编辑器(启动路径文本)
git config --global core.editor "[path]"
# 设置git默认文本编辑器(某个内置编辑器)
git config --global core.editor emacs\vim

Git初始化与克隆

# 在当前目录新建一个仓库
git init
# 在一个目录下新建本地仓库
git init [project-name] 
# 克隆一个远程仓库
git clone [url]
# 克隆一个远程仓库到某个目录
git clone [url] [dir-name]

添加到暂存区修改与提交

# 查看状态
git status
# 查看变更内容
git diff
# 从工作区添加指定文件到暂存区
git add [file-name1] [file-name2] ...
# 添加指定目录到暂存区,包括子目录
git add [directory]
# 将工作区的被修改的文件和新增的文件提交到暂存区,不包括被删除的文件
git add .
# u指update,将工作区的被修改的文件和被删除的文件提交到暂存区,不包括新增的文件
git add -u .
# A指all,将工作区被修改、被删除、新增的文件都提交到暂存区
git add -A .
# 文件改名
git mv [oldname] [newname]
# 删除文件
git rm [file]
# 停止跟踪文件单不删除
git rm --cached [file]
# 递归删除
git rm -r *  
# 提交
git commit -m 'xxx'        
# 修改commit信息 本次
git commit --amend
# 合并上一次提交(用于反复修改)
git commit --amend -m 'xxx'
 # 将add和commit合为一步
git commit -am 'xxx'            

查看提交历史

# 查看提交历史
git log
# 显示x行日志 -x为x行
git log -[number]
# 查看指定文件的提交历史
git log -p [file]
# 以列表的方式查看指定文件的提交历史
git blame [file]
# 显示提交日志及相关变动文件
git log --stat

撤销

# 撤销工作目录中所有未提交文件的修改内容
git reset --hard HEAD
# 撤销置顶的未提交文件的修改内容
git checkout HEAD [file]
# 撤销指定的提交
git revert [commit]

比对

# 显示所有未添加至index的变更
git diff
# 显示所有已添加index但还未commit的变更
git diff --cached
# 比较与上一个版本的差异
git diff HEAD^
# 比较与HEAD版本lib目录的差异
git diff HEAD -- ./lib
 # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master 
 # 只显示差异的文件,不显示具体内容
git diff origin/master..master --stat

远程库

# 查看项目远程仓库
git remote -v
# 添加远程仓库地址
git remote add origin [url]
# 删除远程仓库源
git remote remove origin 
# 获取所有远程分支(不更新本地分支,另需merge)
git fetch
# 获取所有原创分支并清除服务器上已删掉的分支
git fetch --prune
# 列出所有本地标签
git tag
# 基于最新提交常见标签
git tag [tagname]
# 删除标签
git tag -d [tagname]
# -a : 理解为 annotated 的首字符,表示 附注标签
# -m : 指定附注信息
git tag -a [tagname] -m xxxxxx
git tag -a [tagname] [version] -m xxxxx
# 推送标签至远程服务器
git push origin tag [tagname]

分支

# 显示本地分支
git branch
# 显示包含提交50089的分支
git branch --contains [name]
# 显示所有分支
git branch -a
# 删除本地新建分支
git branch -d [name]
# 显示所有原创分支
git branch -r 
# 显示所有已合并到当前分支的分支
git branch --merged
# 显示所有未合并到当前分支的分支
git branch --no-merged 
# 本地分支改名
git branch -m [old] [new]  
# 从当前分支创建新分支并检出
git checkout -b [name]
# 从当前分支创建新分支并检出
git checkout -b [old] [new]
 # 检出已存在的分支
git checkout [name]          
# 检出远程分支并创建本地跟踪分支
git checkout --track [name]
# 检出版本
git checkout v2.0
# 从远程分支develop创建新本地分支devel并检出
git checkout -b devel origin/develop 
# 检出head版本的README文件(可用于修改错误回退)
git checkout -- README 
# 合并远程master分支至当前分支
git merge [name]
# 合并提交的修改
git cherry-pick [name]
# 将当前分支push到远程master分支
git push origin [name]    
# 把所有tag推送到远程仓库
git push --tags
  # 删除分支(本分支修改已合并到其他分支)
git branch -d [name] 
# 强制删除分支
git branch -D [name]

推送/拉取

git pull 
# git允许拉取不关联的历史代码
git pull origin xxxx --allow-unrelated-histories
# git允许推送不关联的历史代码
git push origin xxxx --allow-unrelated-histories

Log 美化

git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

查看个人代码量

[email] 替换成你的提交与邮箱

git log --author="[email]" --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  --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 }';
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容