文章目录
本地库初始化
git init
创建了一个.git隐藏文件,该文件存放的是与本地库有关的文件
设置签名
以用户名和邮箱为标识,用于区分不同的人(用户名可以随意,邮箱不必是真实的,这些与登录代码托管中心的账号密码无关)
仓库级别/项目级别
在当前本地库范围有效,即在testGit文件夹有效(范围较小)
git config user.name [名字]
git config user.email [邮箱]
git config user.name lzw
git config user.email [email protected]
在.git文件夹中,以记事本打开config文件,可以看到配置信息保存进来了
系统用户级别
在登录操作系统的用户范围有效(范围较大)
git config --global user.name [名字]
git config --global user.email [邮箱]
git config --global user.name lzwPro
git config --global user.email [email protected]
在C:\Users\lzw(用户名)目录下,.gitconfig文件中保存着配置信息
基本操作
追踪文件
对未追踪的文件进行追踪,将工作区新建或修改的文件添加至暂存区
git add [文件名]
git add test.txt
提交文件
将暂存区文件提交至本地库
在编辑器中输入提交信息
git commit [文件名]
git commit test.txt
在命令行直接输入提交信息
git commit -m “[提交日志] [文件名]”
git commit -m "my first commit test.txt"
- 提交信息:my first commit!
- 文件内容变化情况
对于修改了内容的文件,可以不add,直接commit,但是不可撤销
移除文件
将test.txt文件从暂存区删除
git rm --cached [文件名]
git rm --cached test.txt
获取状态
查看工作区、暂存器的状态
git status
- 表示在master分支
- 没有已经提交过的,本地库无文件
- 没有可提交的,暂存区无文件
我们在这里新建一个txt文件,再次获取状态
- 表示在master分支
- 没有已经提交过的,本地库无文件
- 存在未追踪的文件,test.txt未放至暂存区。
我们追踪test文件之后,再次获取状态
- 表示在master分支
- 没有已经提交过的,本地库无文件
- test.txt是将要被提交至本地库的文件
将暂存区文件提交之后,再次获取状态
- 表示在master分支
- 暂存区没有要提交的,工作区文件无变化
将test文件内容修改之后,再次获取状态
- 表示在master分支
- test文件被修改,但未添加至暂存区
将修改之后的文件进行追踪,再次获取状态
- 表示在master分支
- 被修改的test文件可以被提交至本地库
删除文件之后,再次获取状态
- 表示在master分支
- test文件被删除,但未添加至暂存区
- 表示在master分支
- 被删除的test文件可以被提交至本地库
查看历史记录
形式1:
git log
详细的显示提交日志(只显示当前版本及之前的版本)
形式2:
git log --pretty=oneline
更美观的显示在一行(只显示当前版本及之前的版本)
形式3:
git log --oneline
哈希值更短(只显示当前版本及之前的版本)
形式4:
git reflog
显示跳转步数(HEAD@{n})(显示所有版本)
版本的移动
本质上是移动HEAD指针
基于索引值(前进或后退)
git reset --hard [局部哈希值]
根据局部索引值移动版本,下方命令移动至60df1f3版本
git reset --hard 60df1f3
我们查看文件test.txt,确实内容变成了对应的版本
使用^符号(后退)
git reset --hard HEAD[n个^]
版本后退n步
git reset --hard HEAD^
查看test.txt文件
使用~符号(后退)
git reset --hard HEAD~[n]
后退指定的n步
git reset --hard HEAD~1
现在test文件的内容已经成为一开始提交的内容
对reset查看本地帮助文档
git help reset
- --hard:在本地库移动HEAD指针,重置暂存区,重置工作区
- --mixed:在本地库移动HEAD指针,重置暂存区
- --soft:在本地库移动HEAD指针
删除文件与恢复
恢复的前提是:删除之前的状态已经提交至本地库
我们手动将文件删除
提交至本地库之后的恢复
git add test.txt
git commit test.txt
查看历史记录
我们现在退至未删除之前的版本即可
可以看到,文件已经恢复
提交至本地库之前的恢复
未使用git commit命令的恢复
git reset --hard HEAD
比较文件差异
我们将文件内容修改(添加了最后一行)
将工作区内容与暂存器区内容进行比较
git diff [文件名]
git diff test.txt
可以看到增加了的行以及删除了的行(这里没有删除的行),增加的是绿色,删除的是红色
将工作区内容与本地库历史记录内容进行比较 (git diff 后加历史版本及文件名)
git diff [历史记录] [文件名]
git diff HEAD^^ test.txt
可以看到,和之前的版本相比多了3行
当git diff 后不加文件名时,比较的是工作区的所有文件
分支管理
分支:在版本控制过程中,使用多条线,同时推进多个任务。
好处1:同时并行推进多个功能开发,提高开发效率
好处2:如果某一分支开发失败,不影响其它分支
创建分支
git branch [分支名]
将当前分支的内容复制到新的分支上
git branch hot_fix
查看分支
git branch -v
查看所有的分支
绿色的是当前分支
切换分支
git checkout [分支名]
git checkout hot_fix
可以看到hot_fix为绿色的分支,即当前的分支为hot_fix
合并分支
git checkout [分支名1]
git merge [分支名2]
先切换至要被合并的分支,再执行合并,将分支2的内容合并到分支1上。
git checkout master
git merge hot_fix
解决冲突
当两个分支中相同的行被修改后,那么两个分支之间的合并将会发生冲突
例如:
在master分支上我们的内容是:
在hot_fix分支上我们的内容是:
那么合并时会发生冲突
此时打开文件,可以看到发生冲突的内容(=======上方为当前分支内容,下方为要合并的分支的内容)
我们对内容进行修改,删除特殊符号,然后改成我们想要的内容
最后提交内容
git add [文件名]
git commit -m “[日志]”
这里不加文件名
linux命令
这是一些常用的linux命令
- ll:显示所有目录(不含隐藏文件)
- ls -la:显示所有目录(含隐藏文件)
- cd [目录]:跳转路径
- mkdir [目录]:新建文件夹
- pwd:查看当前路径
- vim [文件名] :新建文件
- :set nu:显示行号
- :wq:退出编辑
- cat [文件]:查看文件内容
- 空格:向下翻页
- a:向上翻页
- q:退出
- tail -n [行数] [文件名]:显示文件内容的指定行数
- rm [文件名]:删除文件