Git 常用命令总结

⬅️ Back

Git 理论基础

工作区

Git 的三个工作区概念:

工作目录、暂存区域以及 Git 仓库

一般的工作流程就是:

Git 仓库 中拉取项目工程到本地;在 工作目录 中修改文件后暂存文件,可将待提交的文件提交至 暂存区 ,commit 后即将文件从暂存区提交至 Git 仓库

Git config

在设备中有三个等级的 config 文件:

  1. /etc/gitconfig 文件

    包含系统的所有每个用户及仓库的通用配置,可以使用 --system 配置。

  2. ~/.gitconfig~/.config/git/config 文件 只针对当前用户,可以使用 --global 配置。

  3. .git/config

    只针对当前仓库。

常见的配置命令:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
# 设置默认文本编辑器
git config --global core.editor emacs
# 查看 Git 配置
git config --list
# 检查某项配置
git config user.name
# 删除全局设置
git config --global --unset <entry-name>

Git 基础

仓库初始

命令 释义
git init 创建仓库
git add
git add .
git add -f
把文件添加到 暂存区
将工作区所有文件添加到 暂存区
强制添加文件
git commit
-m
-v
-a
--amend
暂存区 文件提交到 Git
将提交信息和命令放在一行
将 diff 信息作为提交信息
跳过提交到 暂存区 的步骤,直接提交
尝试重新提交(如果未做变动时,只会覆盖提交信息)

.gitignore 忽略文件配置:

cat .gitignore

github_gitignore_ A collection of useful .gitignore templates

仓库状态

命令 释义
git status
git status --short
git status -s
查看仓库的当前状态(含未提交变动)
查看简版仓库修改
git diff
git diff --cached
git diff HEAD
git diff --stat
git diff <commit-id> <commit-id>
比较 工作目录暂存区 文件(即上次 git add 的内容)的区别
比较 暂存区 文件与仓库文件(即上次 git commit 后的内容)的区别
比较 工作目录 与仓库当前版本文件的区别
显示变动的摘要信息
展示任意两个 commit 之间的文件变动
git log
git log -p
git log --stat
git log --pretty=oneline
git log --pretty=format:"%h %s" --graph
查看 Git 操作历史记录
显示每次提交的内容差异
显示每次提交的简略统计信息
格式化历史记录信息为一行
格式化历史记录信息显示分支和合并历史
git reflog 查看命令历史

修改管理

命令 释义
git checkout -- <file>
git checkout .
丢弃 工作区 某文件的变动
丢弃所有文件的变动
git reset
git reset --hard HEAD^
git reset --hard <commit_id>
git reset HEAD
回退到某个版本
回到上一版本
回到某次提交
撤销 暂存区 已修改的内容
git rm <file>
git rm -f <file>
git rm --cached <file>
git rm -r *
暂存区 中移除某个文件
强制删除文件
把文件从暂存区删除
递归删除该目录下的所有文件和子目录
git mv 用于移动或重命名一个文件、目录、软连接
git stash
git stash list
git stash apply <name>
git stash drop <name>
git stash pop <name>
贮藏代码
查看贮藏代码
应用贮藏
移除贮藏
应用贮藏并移除
git cherry-pick <commit id> 从某个分支上选择某次提交应用到当前分支

在 Git中用 HEAD 表示当前版本,上一个版本就是 HEAD^,上上个版本是 HEAD^^HEAD^2

远程仓库

命令 释义
git remote add <shortname> <repo>
git remote
git remote -v
git remote show <remote-name>
git remote rename <remote-name> <remote-name>
git remote rm <remote-name>
git remote set-url origin <URL>
添加一个新的远端 Git 仓库
查看远程仓库服务器
显示需要读写远程仓库分支和对应 URL
查看某一个远程仓库的更多信息
修改一个远程仓库的简写名
远程仓库的移除
修改远程仓库的 url
git clone <repo> <directory>
--depth=1
--recursive
克隆仓库到指定的目录
只会 clone 最近一次提交
自动初始化并更新仓库中的每一个子模块
git fetch <remote-name> 抓取克隆(或上一次抓取)后新推送的所有工作
git merge 合并指定分支到当前分支
git pull
git pull --rebase origin <branch-name>
自动抓取并合并远程分支到当前分支
强制把远程库的代码跟新到当前分支上面
git push <remote-name> <branch-name>
git push -u
git push <remote-name> --delete <branch-name>
git push origin <tagname>
git push origin --tags
推送分支到远端
推送代码到远端,并将本地分支与远端分支关联
删除远端分支
将标签推送到远端
一次推送多个标签到远端
git checkout <name>
git checkout <tagname>
git checkout -b <name> <branch-name>
git checkout --track <branch-name>
切换分支
检出标签
创建并切换分支
快速创建并切换分支
git branch
git branch <name>
git branch -d/-D <name>
git branch -v/-vv
git branch --merged/--no-merged
git branch -u <name>
git branch --set-upstream-to=<remote-branch> <branch>
查看当前分支
创建分支
删除(强制删除)分支
查看所有分支的最后一次提交
查看合并(未合并)到当前分支的分支
设置当前分支追踪的远程分支
指定本地分支与远程分支的链接
git rebase <branch> 将提交到某一分支上的所有修改都移至另一分支上
git tag
git tag -a <tag>
`git tag -a -m ''`
`git tag -d `
查看 tag
添加 tag
创建一个附注 tag
删除标签
git show <tag> 查看标签信息与对应的提交信息
git submodule init

git submodule update
git submodule add <URL>
git submodule foreach <command>
初始化子模块本地配置文件
从项目中抓取所有数据并检出父项目中的提交
为仓库添加子模块
遍历 submodule 做某操作

参考资料


⬅️ Back

⬆️ 回到顶部 ⬆️