Git 常用命令整理
Git 删除本地分支
git branch -D/-d branchID
例如
git branch -D/-d A_分支名
Git 批量删除本地分支
git branch | grep '分支名' | xargs git branch -D/-d
例如
git branch | grep 'dev_delete_code' | xargs git branch -D/-d
Git 清除本地存在的远程分支
git remote prune origin
Git 保存一个Commit到本地
git format-patch -1 commitId
例如
git format-patch -1 f3b6e756fd3fe8c97f75d162f46f0983e0145f8e
会保存到当前文件夹下类似名称为 0001-y.patch 的文件
Git 将保存的patch应用到当前分支
git apply 0001-y.patch
Git 查看提交记录
git log 查看提交历史记录
git log --oneline 或者 git log --pretty=oneline 以精简模式显示
git log --graph 以图形模式显示
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 查看某一次提交的文件修改列表
git log -p --author=XXX@secoo.com 代码审查-展开内容差异
git log --stat 显示简要的增改行数统计
Git合并某个分支的一个Commit到另一个分支
- git checkout A分支
- git log XXX_commitId
- git checkout B分支
- git cherry-pick XXX_commitId
例如
git合并某个分支的一个commit到另一个分支
例如要将A分支的一个commit合并到B分支:
首先切换到A分支
git checkout A
git log
找出要合并的commitID
例如commitID为:
0128660c08e325d410cb845616af355c0c19c6fe
然后切换到B分支上
git checkout B
git cherry-pick 0128660c08e325d410cb845616af355c0c19c6fe
然后就将A分支的某个commit合并到了B分支了
Git仓库中恢复已删除的分支或丢失的commit
git reflog show
git brach XXXX_branch commitID
例如
在使用Git的过程中,有时可能会有一些误操作
比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支
结果造成本地(远程)的分支或某些commit丢失
可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除
一般情况下,gc对那些无用的object会保留很长时间后才清除的
reflog是git提供的一个内部工具,用于记录对git仓库进行的各种操作
可以使用git reflog show或git log -g命令来看到所有的操作日志
恢复的过程很简单:
1. 通过git log -g命令来找到我们需要恢复的信息对应的commit_id,可以通过提交的时间和日期来辨别
2. 通过git branch recover_branch commit_id 来建立一个新的分支
这样,我们就把丢失的东西给恢复到了recover_branch分支上了
Git查看某行代码由谁写的,在哪个commit中提交的:
git blame file_name
其显示格式为:
commit ID | 代码提交作者 | 提交时间 | 代码位于文件中的行数 | 实际代码
类似于下面这样:
git blame /home/linux/project/XXX/module/build.gradle -L 1,1
a244fcace1 module-unicorn/build.gradle (kevin 2019-06-03 19:34:25 +0800 1) apply from:"../XXX.gradle"
Git cherry-pick 选择某一个分支中的一个或者多个commit合并
一个很常用的场景就是:我们有一个很稳定的分支版本用于本次发版,但是临时决定要把master分支上的一个提交合并到本次发版分支中,那么这时候我们就可以使用 git cherry-pick
使用方式很简单:
git cherry-pick <commit-id>
Git 获取特定作者的提交日志
指定提交人
git log --author='zhangsan'
指定时间段
git log --before='2019-4-23' --after='2019-3-31'
只列出文件名称
git log --name-only
获取指定作者某一时间段内,提交记录的文件信息
组合上面三个参数即可
git log --author='zhangsan' --before='2019-4-23' --after='2019-3-31' --name-only
Git Diff 比较两次修改的差异
查看两个分支对比差异
git diff 分支A 分支B 具体的类
类似于下面这样:
比较分支A和分支B AAAA.java文件的修改差异
CommonRes/src/main/java/com/secoo/ResCart/AAAA.java
GIT 获取当前git分支名的方法
第一种方式:
git branch | grep "*"
第二种方式:
git symbolic-ref --short -q HEAD
更高级的使用方式请前往移步大神的文章
https://juejin.im/post/5925a2d9a22b9d0058b0fd9b
网友评论