前言
这篇文章我们学习一些 Git 的常用命令
目录
- 新建仓库
git init
git clone
- 基本操作
git add
git rm
git mv
git commit
- 分支操作
git branch
git checkout
git merge
- 远程操作
git remote
git push
git pull
- 信息查看
git status
git log
git show
git reflog
git diff
- 撤销操作
git reset
- 删除操作
git clean
- 修改配置
git config
正文
1、新建仓库
- 初始化:
git init
> # 初始化本地仓库 > git init
- 克隆:
git clone
> # 克隆远程仓库 > git clone <远程仓库地址> > # 克隆远程仓库,并指定本地仓库名 > git clone <远程仓库地址> <本地仓库名称>
2、基本操作
- 添加:
git add
> # 将工作区中的指定文件添加到暂存区,文件必须是未追踪的或已修改的 > git add <文件名称> > # 将工作区中的所有文件添加到暂存区,包括新增的、修改的、删除的文件 > git add -A > git add --all > # 将工作区中的所有文件添加到暂存区,但不包括新增的文件 > git add -u > git add --update > # 将工作区中当前目录下的所有文件添加到暂存区 > # 在 2.x 版本中,包括新增的、修改的、删除的文件 > # 在 1.x 版本中,不包括删除的文件 > git add .
- 删除:
git rm
> # 停止追踪文件,并在硬盘上删除此文件 > git rm <文件名称> > # 停止追踪文件,并在硬盘上删除此文件,若文件在暂存区中,则从暂存区中移出 > git rm --force <文件名称> > # 停止追踪文件,但将该文件保留在硬盘,若文件在暂存区中,则从暂存区中移出 > git rm --cached <文件名称>
- 移动:
git mv
> # 可以用于重命名,并把修改放入暂存区 > git mv <旧文件名> <新文件名>
- 提交:
git commit
> # 将暂存区中的文件提交,然后打开默认编辑器写提交信息 > git commit > # 将暂存区中的文件提交,直接带上提交信息 > git commit -m <提交信息> > # 将工作区中修改和删除的文件放入暂存区,然后将暂存区中的文件提交 > git commit -a > # 使用一次新的提交,覆盖上一次的提交 > git commit --amend
3、分支操作
- 分支:
git branch
> # 查看本地分支 > git branch > # 查看本地分支,并且显示最近一次的提交信息 > git branch -v > git branch --verbose > # 查看远程分支 > git branch -r > git branch --remote > # 查看所有分支 > git branch -a > git branch --all > # 查看本地分支与远程分支的对应关系 > git branch -vv > # 基于当前分支,创建新的分支 > git branch <新分支名> > # 基于当前分支,创建新的分支,并关联远程指定分支 > git branch --set-upstream <新分支名> <远程仓库名称>/<远程分支名称> > # 删除分支 > git branch -d <分支名> > git branch --delete <分支名> > # 强制删除分支 > git branch -D <分支名> > git branch --delete --force <分支名> > # 将当前分支关联远程指定分支 > git branch -u <远程仓库名称>/<远程分支名称> > # 将指定分支关联远程指定分支 > git branch -u <远程仓库名称>/<远程分支名称> <本地分支名称>
- 检出:
git checkout
> # 切换到已有分支 > git checkout <分支名称> > # 基于当前分支,创建新的分支,并切换到该分支 > git checkout -b <新分支名> > # 基于本地指定分支,创建新的分支,并切换到该分支 > git checkout -b <新分支名> <本地分支> > # 基于远程指定分支,创建新的分支,并切换到该分支 > git checkout -b <新分支名> origin/<远程分支> > # 特别:用于撤销工作区指定文件的修改 > # 如果文件在修改后没有放到暂存区,那么就回到版本库(上一次 git commit)的版本 > # 如果文件在暂存区,然后又作修改,那么就回到暂存区(上一次 git add)的版本 > git checkout <文件名称> > git checkout -- <文件名称>
- 合并:
git merge
> # 将指定分支合并到当前分支,尽量将合并解析为快进合并(若指定分支头是当前分支头的祖先,称为快进合并) > # 如果是快进合并,则将当前分支头指向指定分支头,不会产生合并提交 > # 若不是快进合并,并且没有冲突,就会产生一个合并提交 > git merge <分支名称> > # 将指定分支合并到当前分支,即使可以解析为快进合并,也会产生一个合并提交 > git merge --no-ff <分支名称> > # 将指定分支合并到当前分支,如果不能解析为快进合并,就会拒绝合并然后退出 > git merge --ff-only <分支名称> > # 如果合并发生冲突,要么中止合并,回到没有合并前的状态 > git merge --abort > # 要么手动解决冲突,之后重新提交一个合并提交 > git add --all > git commit> # 将指定分支合并到当前分支,尽量将合并
4、远程操作
- 远程仓库:
git remote
> # 显示所有远程仓库 > git remote > # 显示指定远程仓库的详细信息 > git remote show <远程仓库名称> > # 添加一个新的远程仓库 > git remote add <远程仓库名称> <远程仓库地址> > # 修改远程仓库地址 > git remote set-url <远程仓库名称> <远程仓库地址> > # 删除远程仓库 > git remote rm <远程仓库名称> > # 重命名远程仓库 > git remote rename <旧仓库名> <新仓库名>
- 推送:
git push
> # 将当前分支推送到远程仓库的关联分支 > git push > # 将所有分支推送到远程仓库的关联分支 > git push --all > # 不管是否发生冲突,将当前分支强制推送到远程仓库的关联分支 > git push -f > git push --force > # 将当前分支推送到指定远程仓库的指定分支 > git push <远程仓库名称> <远程分支名称> > # 将当前分支推送到指定远程仓库的指定分支,同时将当前分支关联到远程分支 > git push -u <远程仓库名称> <远程分支名称> > git push --set-upstream <远程仓库名称> <远程分支名称> > # 删除指定远程仓库的指定分支 > git push <远程仓库名称> -d <远程分支名称> > git push <远程仓库名称> --delete <远程分支名称>
- 拉取:
git pull
> # 拉取当前分支的关联分支,并合并到当前分支 > git pull > # 拉取指定远程仓库的指定分支,并合并到当前分支 > git pull <远程仓库> <远程分支>
5、信息查看
- 查看当前状态:
git status
> # 查看发生变更的文件 > git status
- 查看提交记录:
git log
> # 查看当前分支所有的提交记录 > git log > # 查看当前分支最近两次的提交记录 > git log -2 > # 只用一行表示一次提交 > git log --oneline > # 显示每次提交发生变化的文件 > git log --stat > # 以图的形式显示提交记录,能看到分支合并的信息 > git log --graph --oneline > # 只会显示提交信息中带有指定字符串的提交记录 > git log --grep <字符串> > # 只会显示变更文件中包含指定文件的提交记录 > git log --follow <文件名称>
- 查看提交信息:
git show
> # 显示最近一次提交的元数据和更改的内容 > git show > # 显示最近一次提交的元数据和发生变化的文件 > git show --name-only > # 显示指定提交的元数据和更改的内容 > git show <commit id> > # 显示指定提交中的指定文件的更改内容 > git show <commit id>:<文件名称>
- 查看命令记录:
git reflog
> # 查看命令记录,包括被删除的 > git reflog
- 查看差异:
git diff
> # 查看暂存区与工作区的差异 > git diff > # 查看暂存区与版本库的差异 > git diff --cached > # 查看工作区与版本库的差异 > git diff HEAD > # 对于指定文件,查看暂存区与工作区的差异 > git diff <文件名称> > # 对于指定文件,查看暂存区与版本库的差异 > git diff --cached <文件名称> > # 对于指定文件,查看工作区与版本库的差异 > git diff HEAD <文件名称>
6、撤销操作
- 回退:
git reset
> # 将 HEAD 指针指向指定版本,暂存区重置,工作区不变 > git reset <commit id> > # 将 HEAD 指针指向指定版本,暂存区不变,工作区不变 > git reset --soft <commit id> > # 将 HEAD 指针指向指定版本,暂存区重置,工作区重置 > git reset --hard <commit id> > # 回退到前一个版本 > git reset HEAD^ > git reset HEAD~1 > # 回退到前三个版本 > git reset HEAD~3 > # 特别:将指定文件从暂存区中移出,保留工作区的状态 > git reset HEAD <文件名称>
7、删除操作
- 删除:
git clean
> # 删除未追踪的文件,不包括已忽略的 > git clean -f > # 删除未追踪的文件,只包括已忽略的 > git clean -f -X > # 删除未追踪的文件,包括已忽略的和未忽略的 > git clean -f -x > # 删除未追踪的文件和目录,不包括已忽略的 > git clean -f -d > # 删除未追踪的文件和目录,只包括已忽略的 > git clean -f -X -d > # 删除未追踪的文件和目录,包括已忽略的未忽略的 > git clean -f -x -d > # 只查看要删除的内容,并不实际删除 > git clean -n
8、修改配置
- 配置:
git config
> # 列出所有配置 > git config --list > # 列出本地配置(对于当前目录适用) > git config --list --local > # 列出全局配置(对于当前用户适用) > git config --list --global > # 列出系统配置(对于所有用户适用) > git config --list --system > # 配置个人信息 > git config user.name "user name" > git config user.email "user email" > # 配置源 > git config get registry > git config set registry https://registry.npmjs.org # 官方源 > git config set registry https://registry.npm.taobao.org # 淘宝源 > # 配置代理 > git config http.proxy "proxy address" > git config https.proxy "proxy address" > # 取消代理 > git config --unset http.proxy > git config --unset https.proxy
【 若希望了解更全面、更详细的命令用法,请看 官方文档】
文章知识点与官方知识档案匹配,可进一步学习相关知识