git常用命令
本文参考内容主要有:
1. https://gitee.com/all-about-git gitee
2. https://www.liaoxuefeng.com/wiki/896043488029600 来自廖雪峰老师的git教程
一、在看命令之前先来了解下git的工作原理 / 流程:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
HEAD指向的版本就是当前版本;
二、git 常用命令
git init:创建版本库
1. 设置全局用户名和邮箱
#配置用户名
$ git config --global user.name "Your Name"
$ git config --global user.email ""
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的
Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2. Git配置单个仓库的用户名&邮箱,如果你不进行配置用户名和邮箱的话, 则会使用全局的;
#配置用户名
$ git config user.name "yourUserName"
#配置邮箱
$ git config user.email ""
3. 查看配置
#查看当前配置
$ git config --list
注意:在当前项目下面查看的配置是 全局配置 + 当前项目配置 , 使用时优先使用前项目配置;
#查看全局配置
$ git config --global --list
4. add,commit
git add 文件名,将文件从工作区增加都index/stage(暂存区)
git 将文件从暂存区移除,
注意:将修改的文件add到暂存区后但是没提交到本地仓库,这时我又修改了工作区的该文件,
如果我需要将刚才修改的工作区的文件提交到本地仓库的话,那么我必须对该文件再次add到暂存区
即:每次修改,如果不用git add到暂存区,那就不会加入到commit中。。
git commit -m "提交注释"命令,提交命令,其中-m后面输入的是本次提交的说明
5. git log命令查看提交历史,显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可
以试试加上--pretty=oneline参数:
$ git log
commit 98bf5780459729112ff2c1a9f3bc420f3f9f84ea (HEAD -> master)
Author: “这里是显示的是提交人信息
Date: Sun Jun 7 18:31:25 2020 +0800
提交dmeo1.txt,demo2.txt和.gitignore文件
其中98bf5780459729112ff2c1a9f3bc420f3f9f84ea,是commit的版本号,和SVN不一样,Git的commit id
不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到
的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为
Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作
为版本号,那肯定就冲突了。每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可
视化工具查看Git历史,就可以更清楚地看到提交历史的时间线。
6. git reflog查看命令历史;
7. $ git reset --hard HEAD(HEAD指版本号),版本回退,需要注意的是使用版本回退后,git log是看不出
你回退到版本号之前的记录的,但你可以使用git reflog查看命令历史;
7.1 git revert <commit-id>:这条命令会把指定的提交的所有修改回滚,并同时生成一个新的提交。
8. git status 命令来查看相关文件的状态,git status -s 来查看简写的状态;
9. git reset HEAD <file>,从index/stage(暂存区)移除;
10. git diff 相干操作:
# 显示暂存区和工作区的差异
# 输出内容解读可参考:https://blog.csdn.net/weixin_37909391/article/details/84641899
$ git diff
# 显示暂存区和上一个commit(或者说最后一次commit)的差异
$ git diff --cached [file]/git diff --staged [file]
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]
# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"
11. git checkout -- file,文件在工作区的修改全部撤销,注意其中的--很重要,没有--,就变成了
“切换到另一个分支”的命令;
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,
用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命
令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可参考版本回退,不过前提是没有推
送到远程库。