不总结不知道,一总结才发现 Git 的强大非比寻常。本文将 Git 的一些常用操作命令列出,以便今后查看,说不定哪天就全命令操作了呢。
基础
创建版本库
- 新建或者来到一个目录下,使用如下命令,使之成为 Git 库
- 使用命令后,将会生成一个 .git 目录,此目录不可随意删除
1 | git init |
克隆远程库
- 知道 Git 库地址后,可以用克隆的方式将其克隆到本地,比如 GitHub 的开源库
- Git 支持
ssh
和https
协议
1 | git clone |
添加文件
- 添加命令只是把文件添加到暂存区,需要进行提交之后才会正式添加到仓库中
1 | git add <file> |
提交修改
- 把所有添加到暂存区的文件提交到仓库中
- Git 记录的是修改,不管是改了仓库中文件内容,还是新增或删除文件,都算修改操作
- -m 指定此次提交的描述文字,为了方便以后查阅,最好每次都写上有意义的描述文字
1 | git commit -m "commit-message" |
拉取
- 从远程仓库拉取最新的内容
1 | git pull |
推送
- 将本地仓库的修改推送到远程仓库
1 | git push |
查看状态
- 不管是做了什么操作,想知道当前工作区的状态,可以用下面的命令查看工作区所处状态
- 比如告诉你文件内容有没有被修改,是否有新增文件,修改有没有被提交等
1 | git status |
如果是一个人开发的话,知道添加、提交、推送就差不多了…
增删改查
添加所有
除了单个文件添加外,还可以把所有修改都添加到暂存区
1 | git add . //添加新文件和被修改的文件,但不包括被删除的文件 |
查看
利用 log 可以查看所有提交的修改记录
1 | git log //显示最近的提交日志,最原始,不带任何过滤 |
查看历史操作命令记录
1 | git reflog |
查看当前指定文件修改内容的前后变化
1 | git diff <file> |
查看指定文件在工作区与版本库中的区别
1 | git diff HEAD -- <fiel> |
删除
rm
删除文件,操作之后不要忘了提交
如果已经在目录中手动删了了文件,此时用 git rm 和 git add 效果一样
1 | git rm <file> |
clean
删除所有未被添加的修改
1 | git clean -n //演习,告诉你哪些文件将会被删除 |
reset
此命令主要用于版本回退,但是也能起到删除的作用
用 git reset –hard 和 git clean -df 会让所有此次修改都 say goodbye
注意:如果已经关联了远程仓库,用 reset 的回退命令
1 | git reset --hard <commit-id> //回退到指定提交的版本,提交 id 不写默认是最近一次提交 |
checkout
此命令主要用于切换分支,不过也可以起到删除作用
其中的
--
是关键
1 | git checkout -- <file> //丢弃修改,让指定文件回到最近一次 git commit 或 git add 状态 |
远程操作
关联远程仓库
1 | git remote add origin <git@url> //origin 是远程仓库名,可以取别的,后面跟地址 |
推送
git push 是默认推送,但如果是初次与远程库关联,初次推送时,用下面的命令
-u 是因为远程仓库是空的,git 会把本地的 master 分支内容推送到远程新的 master 分支,并关联远程库的 master 分支,以后的推送时就不需要加-u了
1 | git push -u origin master |
查看远程库信息
1 | git remote //查看远程库的信息 |
删除远程库关联
1 | git remote rm origin |
分支
创建
1 | git branch <branch-name> |
切换
1 | git checkout <branch-name> // 切换到指定分支 |
查看
1 | git branch //会显示所有分支,当前分支用 * 号标记 |
关联
有时候推送的时候,会发现未与远程分支关联
1 | git branch --set-upstream-to=origin/<branch-name> <branch-name> |
合并
1 | git merge <branch-name> //合并指定分支到当前分支,默认会用 Fast-forward 快速模式 |
删除
1 | git branch -d <branch-name> //删除已经合并的分支 |
标签
创建
1 | git tag <tag-name> //创建标签,默认指向最新的提交 |
查看
1 | git tag //查看所有标签 |
推送
1 | git push origin <tag-name> //推送某个标签到远程库 |
删除
1 | git tag -d <tag-name> //删除标签 |
其他骚操作
储藏
1 | git stash //把当前未提交的修改储藏起来 |
变基
1 | git rebase //把本地未push的分叉提交历史整理成直线,这个功能貌似只是让查看历史提交记录时好看点 |
撤回
1 | git revert <commit-id> //撤回到指定提交 |
配置
全局配置
1 | git config --global user.name “Your name” //配置git全局用户名,--global 针对全局,如果不加只针对当前仓库 |
SSH
1 | ssh-keygen -t rsa -C “youremail” //创建 SSH Key,将在 .ssh 目录下生成一个私钥 id_rsa 和公钥 id_rsa.pub |