笔记三:git常用命令
一:学习内容
1、设置用户签名:
git config --global user.name 用户名
git config --global user.email 邮箱
2、操作本地库:
初始化本地库:git init
查看本地库状态:git status
3、操作暂存区:
添加到暂存区:git add 文件名
提交到本地库:git commit -m "日志信息" 文件名
4、操作历史版本:
查看历史记录:gitreflog
版本穿梭:git reset --hard 版本号
二、设置用户签名
👉1、git首次安装好以后,需要设置一次用户签名,首次安装设置一次即可,如果你不设置自己的用户签名,那么后面我们提交代码的时候,git会报错。
👉2、签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。后面执行git log命令可以看到该信息
👉3、需要注意的是:这里设置的用户签名和将来登录github或其他代码托管中心的账号没有任何关系。
👉4、实操如下:
1 #给git客户端取个名字叫tester 2 git config --global user.name tester 3 4 #给git客户端设置一个邮箱,一般设置真实的邮箱,不过就算是假的git也不会校验 5 git config --global user.email tester@glo.com 6 7 #进入windows家目录下,即C:\Users\你当前使用的用户\,出现.gitconfig文件则用户签名设置成功 8 #也可以用命令看 9 cat ~/.gitconfig
命令操作结果如下:
三、初始化本地库
👉1、意思是用git管理一个目录,你需要让git获取这个目录的管理权
1 #在git-demo目录中,初始化本地库 2 git init 3 4 #查看隐藏文件,在git bash中的命令和linux中命令相同 5 ll -a
命令操作结果如下:
四、查看本地库状态
1 #没有任何文件内容时,查看本地库状态 2 git status
命令操作结果如下:
1 #新增一个文件 2 #vim中非insert模式下,yy为复制,p为粘贴 3 vim hello.txt 4 5 #再次查看本地库状态,此时会显示存在未追踪的文件 6 git status
命令操作结果如下:【红色字体:代表工作区有文件,但是没有添加到暂存区,导致git不能追踪到】
五、添加暂存区
暂存区: 英文 stage, 或 index,一般存放在.git目录下的index文件
1 #添加暂存区 2 git add hello.txt 3 4 #再次查看本地库状态,此时hello.txt会由红色变成绿色,代表git已经追踪到了这个文件 5 #此时hello.txt文件在暂存区,可以被删除,不会生成版本记录,只有提交到本地库的文件才会生成版本记录 6 git status 7 8 #可以删除暂存区的文件,工作区不会删除 9 git re --cached hello.txt 10 11 #再次添加暂存区 12 git add hello.txt 13 14 #再次查看本地库状态,此时hello.txt会由红色变成绿色,代表git已经追踪到了这个文件 15 git status
命令操作结果如下:
添加暂存区:警告的意思是在暂存区,git碰到LF换行符会转换成CRLF换行符
再次查看本地库状态:此时hello.txt已经从工作区拷贝到了暂存区
删除暂存区:
再次添加暂存区,再看状态,红色变成绿色了:
六、提交本地库
目的是将暂存区的文件提交到本地库
1 #提交本地库 2 git commit -m "first commit" hello.txt 3 4 #再次查看本地库状态 5 git status 6 7 #查看版本信息-引用日志信息 8 git reflog 9 10 #查看版本信息-详细日志信息 11 git log
命令操作结果如下:
提交本地库:
再次查看本地库状态:
noting to commit,working tree clean:你已经提交过了,并且在你提交过以后,既没有新增也没有修改,工作树是干净的
查看引用日志信息:8b94833 (HEAD -> master) HEAD@{0}: commit (initial): first commit
8b94833为精简版本号,是完整版本号的前7位数字
(HEAD -> master)为当前指针指向master
first commit为提交的版本,即第一次提交的版本
查看版本信息:
不仅能看到完整版本号、提交的版本还可以看到谁提交的这个版本
tester <tester@glo.com>:谁提交的这个版本,这就是我们之前设置的用户签名,在这里被用到了
七、修改文件
目的是修改文件,修改文件添加到暂存区并提交到本地库,如果多次操作则在本地库中会生成多条版本记录,而工作区始终只有一个文件显示的指针指向的版本的内容。
1 #修改文件,只改一行数据 2 vim hello.txt 3 4 #然后查看本地库状态,会提示你文件被修改了,并且文件变成了红色,说明文件还没有添加到暂存区 5 git status 6 7 #添加暂存区 8 git add hello.txt 9 10 #提交本地库 11 git commit -m "second commit" hello.txt 12 13 #再次查看本地库状态,发现本地库又干净了 14 git status 15 16 #再次查看版本信息-引用日志信息,发现有两个版本,并且指针指向的是第二个版本的信息,也就是修改后的文件 17 #而工作区的hello.txt文件则永远只有一个文件,显示的内容是当前指针指向的版本内容。也就是工作区显示一个版本,版本管理工作交给git本地库里来管理 18 git reflog 19 20 #再次查看版本信息-详细日志信息 21 git log 22 23 #查看工作区文件内容,应该显示的指针指向的版本,即修改后的文件。 24 #这里查看的内容即为磁盘E:\GitSpace\git-demo\hello.txt的文件内容 25 cat hello.txt
命令操作结果如下:
修改文件并查看本地库状态:
添加暂存区并查看本地库状态:
提交本地库:
1 file changed, 1 insertion(+), 1 deletion(-):一个文件被修改,增加了一行,删除了一行
我明明只修改了一行,为什么要说我新增了一行和删除了一行呢?这是因为git是对行管理的,修改一行它实际的操作是先删除掉这行,然后把你修改的那一行新增进来,所以变成了一行新增一行删除
再次查看本地库状态:又干净了
再次查看版本信息:发现有两个版本了
dbb4e24 (HEAD -> master) HEAD@{0}: commit: second commit:说明指针指向的是第二个版本
查看文件内容:应为指针指向的版本内容,如现在是指向第二个版本则为修改后的文件效果
八、查看版本信息
可以看到这个项目一共发布了多少个版本,每个版本的发布时间,以及版本号,每个版本的提交者
1 #查看精简版本信息 2 git reflog 3 4 #查看详细版本信息 5 git log
命令操作结果如下:
九、版本穿梭
git版本穿梭,底层其实是移动HEAD指针
git做版本控制,并不是拷贝粘贴给你造很多个副本,而是在本地库的内存里,记录了很多版本信息,然后通过指针来指向不同的版本
1 #查看精简版本号,拷贝版本号 2 git reflog 3 4 #穿梭到指定版本 5 git reset --hard 要穿越的版本号
命令执行结果如下:
版本穿梭:穿到历史版本
此时本地工作区的hello.txt将会显示指针指向的那个版本的内容,即第1个版本的内容:
再次穿梭:穿梭到第3个版本
此时本地工作区的hello.txt将会显示指针指向的那个版本的内容,即第3个版本的内容:
cat hello.txt查看的内容就是磁盘E:\\GitSpace\\git-demo路径下的hello.txt的内容