指令-查看状态信息
| 指令 |
描述 |
| 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,替代上一次提交,会修改commit的hash值(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 |
从远端remote的hotfix分支创建本地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] |
同上,指定文件file,HEAD可省略 |
| git reset [commit] |
回退到指定版本,清空暂存区,不影响工作区。工作区需要手动git checkout签出 |
| git reset –soft [commit] |
移动分支master、HEAD到指定的版本,不影响暂存区、工作区,需手动`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输出历史日志记录,比较多的时候先出现一部分,输入回车持续输出。