美文网首页
Git 常用命令整理

Git 常用命令整理

作者: kevinsEegets | 来源:发表于2019-07-24 14:57 被阅读0次

    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到另一个分支

    1. git checkout A分支
    1. git log XXX_commitId
    1. git checkout B分支
    1. 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

    相关文章

      网友评论

          本文标题:Git 常用命令整理

          本文链接:https://www.haomeiwen.com/subject/glmxrctx.html