关联文章:Git入门图文教程(1.5W字40图)????????--深入浅出、图文并茂

????指令-查看状态信息

指令 描述
git --version 查看git版本
git status 查看本地仓库状态,比较常用的指令,加参数-s简洁模式
git [指令] -h 查看指令帮助信息
git [指令] --help 打开指令详细帮助页面
git remote -v 查看所有远程仓库,不带参数-v只显示名称
git branch 查看分支列表,以及当前分支
git tag 查看标签列表
git log -n20 查看日志(最近20条),可省略n-20;参数--graph可视化显示分支关系
git log --follow [file] 显示某个文件的版本历史,包括文件改名
git reflog 查看所有可用的历史版本记录(实际是HEAD变更记录),包含被回退的记录,常用来撤销回退
git blame [file] 以列表形式查看指定文件的历史修改记录
git config --list 查看配置信息,包括系统(--system)+全局(--global)+项目(--local)配置
git config --list --system 查看系统配置,全局(--global)、项目(--local)配置配置类似
cat [file] 读取一个文件,展示其文件内容

????指令-代码/仓库管理

指令 描述
git clone [git地址] 从远程仓库克隆到本地(当前目录)
git init [文件目录] 初始化创建Git仓库,如果不指定[文件目录],则在当前目录创建。
git add [file1] [file2] 添加文件到暂存区,包括修改的文件、新增的文件
git add [dir] 同上,添加目录到暂存区,包括子目录
git add . 同上,添加所有修改、新增文件(未跟踪)到暂存区
git rm [file] 删除工作区文件,并且将这次删除放入暂存区
git commit -m '说明' 提交变更,参数-m设置提交的描述信息,应该正确提交,不带该参数会进入说明编辑模式
git commit -a 参数-a,表示直接从工作区提交到版本库,略过了git add步骤,不包括新增的文件
git commit [file] 提交暂存区的指定文件到仓库区
git commit --amend -m 使用一次新的commit,替代上一次提交,会修改commithash值(id)
git cherry-pick [commit] 拣选提交,复制一个特定的提交到当前分支,而不管这个提交在哪个分支
git log -n20 查看日志(最近20条),不带参数-n则显示所有日志
git log -n20 --oneline 参数“--oneline”可以让日志输出更简洁(一行)
git log -n20 --graph 参数“--graph”可视化显示分支关系
git log --follow [file] 显示某个文件的版本历史
git blame [file] 以列表形式显示指定文件的修改记录
git reflog 查看所有可用的历史版本记录(实际是HEAD变更记录),包含被回退的记录(重要

????指令-diff

指令 描述
git diff 查看暂存区和工作区的差异
git diff [file] 同上,指定文件
git diff --cached 查看已暂存的改动,就是暂存区与新版本HEAD进行比较
git diff --staged 同上
git diff --cached [file] 同上,指定文件
git diff HEAD 查看已暂存的+未暂存的所有改动,就是与最新版本HEAD进行比较
git diff HEAD~ 同上,与上一个版本比较。HEAD~表示上一个版本,HEAD~10为最近第10个版本
git diff [id] [id] 查看两次提交之间的差异
git diff [branch] 查看工作区和分支直接的差异

????指令-远程仓库

指令 描述
git clone [git地址] 从远程仓库克隆到本地(当前目录)
git remote -v 查看所有远程仓库,不带参数-v只显示名称
git remote show [remote] 显示某个远程仓库的信息
git remote add [name] [url] 增加一个新的远程仓库,并命名
git remote rename [old] [new] 修改远程仓库名称
git pull [remote] [branch] 取回远程仓库的变化,并与本地版本合并
git pull 同上,针对当前分支
git fetch [remote] 获取远程仓库的所有变动到本地仓库,不会自动合并!需要手动合并
git push 推送当前分支到远程仓库
git push [remote] [branch] 推送本地当前分支到远程仓库的指定分支
git push [remote] --force/-f 强行推送当前分支到远程仓库,即使有冲突,⚠️很危险!
git push [remote] --all 推送所有分支到远程仓库
git push –u 参数–u表示与远程分支建立关联,第一次执行的时候用,后面就不需要了
git remote rm [remote-name] 删除远程仓库
git pull --rebase 使用rebase的模式进行合并

????指令-分支

指令 描述
git branch 列出所有本地分支,加参数-v显示详细列表,下同
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支,用不同颜色区分
git branch [branch-name] 新建一个分支,但依然停留在当前分支
git branch -d dev 删除dev分支,-D(大写)强制删除
git checkout -b dev 从当前分支创建并切换到dev分支
git checkout -b feature1 dev 从本地dev分支代码创建一个 feature1分支,并切换到新分支
git branch [branch] [commit] 新建一个分支,指向指定commit id
git branch --track [branch] [remote-branch] 新建一个分支,与指定的远程分支建立关联
git checkout -b hotfix remote hotfix 从远端remotehotfix分支创建本地hotfix分支
git branch --set-upstream [branch] [remote-branch] 在现有分支与指定的远程分支之间建立跟踪关联:
git branch --set-upstream hotfix remote/hotfix
git checkout [branch-name] 切换到指定分支,并更新工作区
git checkout . 撤销工作区的(未暂存)修改,把暂存区恢复到工作区。
git checkout HEAD . 撤销工作区、暂存区的修改,用HEAD指向的当前分支最新版本替换
git merge [branch] 合并指定分支到当前分支
git merge --no-ff dev 合并dev分支到当前分支,参数--no-ff禁用快速合并模式
git push origin --delete [branch-name] 删除远程分支
git rebase master 将当前分支变基合并到master分支
✅switch:新的分支切换指令 切换功能和checkout一样,switch只单纯的用于切换
git switch master 切换到已有的master分支
git switch -c dev 创建并切换到新的dev分支

????指令-标签管理

指令 描述
git tag 查看标签列表
git tag -l 'a*' 查看名称是“a”开头的标签列表,带查询参数
git show [tagname] 查看标签信息
git tag [tagname] 创建一个标签,默认标签是打在最新提交的commit上的
git tag [tagname] [commit id] 新建一个tag在指定commit上
git tag -a v5.1 -m'v5.1版本' 创建标签v5.1.1039-a指定标签名,-m指定说明文字
git tag -d [tagname] 删除本地标签
git checkout v5.1.1039 切换标签,同切换分支
git push [remote] v5.1 推送标签,标签不会默认随代码推送推送到服务端
git push [remote] --tags 提交所有tag

????指令-撤销变更

指令 描述
git checkout . 撤销工作区的(未暂存)修改,把暂存区恢复到工作区。不影响暂存区,如果没暂存,则撤销所有工作区修改
git checkout [file] 同上,file指定文件
git checkout HEAD . 撤销工作区、暂存区的修改,用HEAD指向的当前分支最新版本替换工作区、暂存区
git checkout HEAD [file] 同上,file指定文件
git reset 撤销暂存区状态,同git reset HEAD,不影响工作区
git reset HEAD [file] 同上,指定文件fileHEAD可省略
git reset [commit] 回退到指定版本,清空暂存区,不影响工作区。工作区需要手动git checkout签出
git reset --soft [commit] 移动分支masterHEAD到指定的版本,不影响暂存区、工作区,需手动git checkout签出更新
git reset --hard HEAD 撤销工作区、暂存区的修改,用当前最新版
git reset --hard HEAD~ 回退到上一个版本,并重置工作区、暂存区内容。
git reset --hard [commit] 回退到指定版本,并重置工作区、暂存区内容。
git revert [commit] 撤销一个提交,会用一个新的提交(原提交的逆向操作)来完成撤销操作,如果已push则重新push即可

????指令-stash

指令 描述
git stash 把未提交内容隐藏起来,包括未暂存、已暂存。 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的内容列表
git stash pop 恢复被隐藏的内容,同时删除隐藏记录
git stash save "message" git stash,可以备注说明message
git stash apply 恢复被隐藏的文件,但是隐藏记录不删除
git stash drop 删除隐藏记录

命令行的退出方式

有些git命令的执行并不是一次就完成了,会有连续的后续操作。

① “git log”退出git log输出历史日志记录,比较多的时候先出现一部分,输入回车持续输出。

  • 退出方式:输入“q”。

② “git commit”退出git commit没有带-m参数时,会进入vim编辑模式,等待输入提交的描述信息。

  • 保存并退出:
    1. 按 Esc 键退出编辑模式,英文模式下输入 :wq ,然后回车。
    2. 按 Esc 键退出编辑模式,大写英文模式下输入 ZZ ,然后回车。
  • 不保存退出:
    1. 按 Esc 键退出编辑模式,英文模式下输入 :q! ,然后回车。
    2. 按 Esc 键退出编辑模式,英文模式下输入 :qa! ,然后回车。