Skip to content

收集了常用的Git命令,作为备忘录

Git命令大全

Git最小配置
  • 某账号下所有的Git仓库都有效

    sh
    git config --global user.name '您的名称'
    git config --global user.email '您的Email'
  • 只对当前Git仓库有效

    shell
    git config --local user.name '您的名称'
    git config --local user.email '您的Email'
查看Git的配置
  • 查看global类型配置项

    shell
    git config --global --list
  • 查看只作用于当前仓库的配置项

    shell
    git config --local --list
清除Git的配置
  • 清除global类型的配置项

    shell
    git config --unset --global 某个配置项
  • 清除某个仓库的配置项

    shell
    git config --unset --local
本地基本操作
  • 查看变更情况

    shell
    git status
  • 查看当前工作在哪个分支上

    shell
    git branch -v
  • 切换到指定分支

    shell
    git checkout 指定分支
  • 把当前目录及其子目录下所有变更都加入到暂存区

    shell
    git add .
  • 把仓库内所有变更都加入到暂存区

    shell
    git add -A
  • 把指定文件添加到暂存区

    shell
    git add 文件1 文件2 文件3
  • 创建正式的commit

    shell
    git commit
  • 比较某文件工作区和暂存区的差异

    shell
    git diff 某文件
  • 比较某文件暂存区和HEAD的差异

    shell
    git diff --cached 某文件
  • 比较某文件工作区和HEAD的差异

    shell
    git diff HEAD 某文件
  • 比较工作区和暂存区的所有差异

    shell
    git diff
  • 比较暂存区和HEAD的所有差异

    shell
    git diff --cached
  • 把工作区指定文件恢复成和暂存区一样

    shell
    git checkout 文件1 文件2 文件3
  • 把暂存区指定文件恢复成和HEAD一样

    shell
    git reset 文件1 文件2 文件3
  • 把暂存区和工作区所有文件恢复成和HEAD一样

    shell
    git reset --hard
  • 用difftool比较任意两个commit的差异

    shell
    git difftool 提交A 提交B
  • 查看哪些文件没被Git管控

    shell
    git ls-files --others
加塞临时任务的处理
  • 把未处理的变更先保存到stash中

    shell
    git stash
  • 临时任务处理完后继续之前未完的工作

    shell
    git stash pop
    或者
    git stash apply
    # pop 不保留stash,apply 保留stash
  • 查看所有stash

    shell
    git stash list
  • 取回某次stash的变更

    shell
    git stash pop stash@{数字n}
修改个人分支的历史
  • 修改最后一次commit

    shell
    1) 在工作区修改文件
    2) git add .
    3) git commit --amend
  • 修改中间的commit(代号X)

    shell
    1) git rebase -i X前面一个commit的id
    2) 在工作区修改文件
    3) git add .
    4) git rebase --continue
    后续可能需要处理冲突,直到rebase结束
查看变更历史
  • 当前分支各个commit用一行显示

    shell
    git log --oneline
  • 显示就近的n个commit

    shell
    git log -n
  • 用图示显示所有分支的历史

    shell
    git log --oneline --graph --all
  • 查看涉及到某文件变更的所有commit

    shell
    git log 某文件
  • 某文件各行最后修改对应的commit以及作者

    shell
    git blame 某文件
分支与标签
  • 基于当前分支创建新分支

    shell
    git branch 新分支
  • 基于指定分支创建新分支

    shell
    git branch 新分支 已有分支
  • 基于某个commit创建分支

    shell
    git branch 新分支 某个commit的id
  • 创建分支并切换到该分支

    shell
    git checkout -b 新分支
  • 列出本地分支

    shell
    git branch -v
  • 列出本地和远端分支

    shell
    git branch -av
  • 列出远端所有分支

    shell
    git branch -rv
  • 列出名称符合某样式的远端分支

    shell
    git branch -rv -l '某样式'
  • 安全删除本地某分支

    shell
    git branch -d 拟删除分支
  • 强行删除本地某分支

    shell
    git branch -D 你删除分支
  • 删除已合并到master分支的所有本地分支

    shell
    git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
  • 删除远端origin已不存在的所有本地分支

    shell
    git remote prune origin
  • 给commit打上标签

    shell
    git tag 标签名 commid的id
两分支之间的集成
  • 把A分支合入到当前分支,且为merge创建commit

    shell
    git merge A分支
  • 把A分支合入到B分支,且为merge创建commit

    shell
    git merge A分支 B分支
  • 把当前分支基于B分支做rebase,以便把B分支合入到当前分支

    shell
    git rebase B分支
  • 把A分支基于B分支做rebase,以便把B分支合入到A分支

    shell
    git rebase B分支 A分支
  • 用mergetool解决冲突

    shell
    git mergetool
和远端交互
  • 列出所有remote

    shell
    git remote -v
  • 增加remote

    shell
    git remote add url地址
  • 删除remote

    shell
    git remote remove remote名称
  • 改变remote的name

    shell
    git remote rename 旧名称 新名称
  • 把远端所有分支和标签的变更都拉到本地

    shell
    git fetch remote
  • 把远端分支的变更拉到本地,且merge到本地分支

    shell
    git pull remote名称 分支名
  • 把本地分支push到远端

    shell
    git push remote名称 分支名
  • 删除远端分支

    shell
    git push remote --delete 远端分支名
    
    git push remote :远端分支名
  • 向远端提交指定标签

    shell
    git push remote 标签名
  • 向远端提交所有标签

    shell
    git push remote --tags

飞桨PPDB——深度学习社区