Git 学习
1、初步认识 Git
Git 是一个 免费、开源的分布式版本控制系统,可以快速处理从小到大的项目。 ,跟分布式对应的还有一个 集中式版本控制系统 。
- 易于学习
- 占地面积小
- 性能快
- 有廉价的本地库
- 有方便的暂存区域和多个工作流分支
版本控制
版本控制是能够记录文件内容变化,以便查询特定版本修改情况的系统。
最重要的是它能记录文件修改历史纪录,使得用户能看到版本变化,而且还能做到版本切换。就是把过去记录到的版本切换回去。
两者对比
- 集中式版本控制工具能做到团队内的每个成员都知道她其成员的工作进度,缺点就是若果出现故障就整个团队进度都会被影响
- 分布式版本控制工具中有一个版本控制中心【由企业组织提供】,每次修改版本都是一次把项目完整的备份到本地仓库,即使控制中心出现了故障,个人的电脑上也会有版本控制工具,只是不能在故障期间向控制中心提交代码。每个客户端都是完整的备份
Git 的工作机制
Git 有三个分区:
- 工作区【创建项目时在磁盘上开辟出来的空间,写代码】 -> git add 暂存区【暂时存储】 -> git commit 本地库
- 在工作区和暂存区的代码修改没有历史版本,但是如果代码提交到仓库后就会生成一个历史版本,无法删除
代码托管中心【远程库】
代码托管中心是基于网络服务器的远程代码库,一般称为远程库。
- 局域网 -> GitLab
- 国外 -> GitHub
- 国内 -> Gitee
Git 的安装:
首先来到官网:https://git-scm.com/
- 点击 Windows GUI -> Downloads -> 选择运行环境 Windows -> 选择版本 第一个的 64 bit,下载好了设置好安装目录,一路next,
- 中间会有一步问你需不需要在环境变量中设置或者只在 GitBash 中使用 Git ,看不懂就next,愿意改的改个选项,没什么影响,
- 还有一个就是设置 Git Bash 的文本编辑器,默认选的是Vim,愿意换的就换,个人习惯,
- 还有就是主分支名称默认是 master ,还有一个自定义选项,愿意自定义就自定义
- 还有一个是问你要不要让它自动使用LF【Linux的换行方式】替换CRLF【Windows的换行方式】,随便自己。
- 最后finish。【要记住一点,能装就能删,弄不好连文件夹一起删再装呗】
- 桌面右键就能出现 GitBash Here ,点击就能看见一个命令行窗口。当让还有一个 GitGUI Here,但是丑,没啥人用。
进入GitBash 输入 git --version
就会出现当前你安装的 Git 的版本信息。嫌字体小可以 CTRL滚轮拉大
2、Git 的命令
命令名称 | 作用 |
---|---|
git config --global user.name 自定义的用户名 | 设置用户签名 |
git config --global user.email 自定义用户邮箱 | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 将文件添加到暂存区 |
git commit -m 日志信息文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
命令能通过 双击Tab 键补全
1、设置用户签名
- git config --global user.name xxx用户名
- git config --global user.email xxx邮箱
- 输入
cat ~/.gitconfig
可以查看已经存在的Git配置,这个文件就在当前系统用户目录下的 .gitconfig 文件里记录着
设置用户名和邮箱只是为了确定当前操作者的身份,在每一个提交版本中都可以看见这个身份信息,确认提交是谁做的,git 不会去验证是否存在这个邮箱,如果不设置就在后面无法提交代码。这里设置的用户名邮箱跟github上登陆的没一点关系。
2、初始化本地库 git init
-
先创建一个空目录【要提前规划好目录】,然后新打开一个 GitBash 窗口,这样git就创建在那个目录里面了。
-
输入 git init ,就会提示你当前已经在这个目录下创建了一个空的仓库 当前目录下的 .git 目录,但是这个目录默认隐藏看不见,可以这么做
-
或者在 GitBash 窗口中使用 linux 命令
ll -a
查看当前目录下所有文件,就能看见 .git 文件夹,也可以cd /.git
进入目录, 然后ll
查看目录内的文件。但是看就行了别它。而且也能发现Linux 中的命令都能在git里面用,他俩都是一个爹做的
3、查看本地仓库状态 git status
- 输入
git status
后,会返回一些信息,第一次空的目录里面,有三行内容,第一行是说当前在哪个分支里面,第二行说有没有提交记录,第三行是说目录里面有没有产生文件记录,空的就是没有 - 然后就能使用 Linux 命令创建一个新的文件
vim hello.txt
,然后在里面写点东西多复制【退出编辑并yy
复制 p粘贴】几行。:wq
退出 - 然后再输入
git status
就会发现他最后一行就提示你出现了未追踪的文件后面是刚才创建的那个文件名不过冒红【当前文件在工作区】,这个时候他就提示你通过git add
命令提交文件至暂存区 - 通过
git add hello.txt
把文件添加到暂存区后,会提示你说【这里是一个警告,狗屁用没有】会用 LF 替换 CRLF 【在安装的时候软件问过】,还会提示你这个文件已经存在工作目录了,再输入git status
就会出现一个提示说已经在监控这个文件了,而且在 暂存区的文件可以被删除,所以他就提示你用git rm --cached 文件名
能把这个文件删除了。当然只是在暂存区删除,工作区的文件还存在。 - 输入
git rm --cached hello.txt
再git status
再git add hello.txt
多体验一下变化
4、将暂存区文件提交本地库 git commit -m “日志信息” 文件名
-
首先
git conmmit -m "first commit" hello.txt
提交本地库。就会返回一些日志报文-
通知你一下 CRLF 被替换成 LF 了 warning: LF will be replaced by CRLF in test.txt. 这个文件在你的工作目录存在了 The file will have its original line endings in your working directory 主分支提交了一个文件,7位字符编码就是提交文件的版本号,后面跟著提交时写的日志信息 [master (root-commit) 0b1dd9b] first submit 一个文件变化,十行记录插入 1 file changed, 10 insertions(+) 创建了一个多少字节的文件 create mode 100644 test.txt
-
-
然后再输入
git status
就会看见一直提示你的没有提交的信息消失了代替的是nothing to commit, working tree clean
说你的工作树是干净的,没东西需要提交了
-
可以通过
git reflog
查看引用日志信息-
0b1dd9b (HEAD -> master) HEAD@{0}: commit (initial): first submit 这就是之前提交的那个记录的版本号,指针指向 master 分支,最后那个就是第一次提交的版本信息
-
-
也可以通过
git log
查看详细日志信息-
提交的内容的完整版本号,前面那个只是截取了前七位 commit 0b1dd9b55219863527d66218e7066d94f059a020 (HEAD -> master) 之前起的用户名和邮箱,还有就是时间日期、提交时的日志信息 Author: xyk <xyk@xyk.com> Date: Wed Mar 9 10:04:07 2022 +0800 first submit
-
5、修改文件
-
先对 hello.txt 文件进行编辑修改
vim hello.txt
随便做点修改-
再输入
git status
查看本地仓库状态就会出现一个冒红,说是出现了不受控制的修改,是因为只是在工作区修改了,没有提交到暂存区。你可以通过提交命令或者回撤命令git restore
放弃修改 -
git add
提交一下,然后再查看状态git status
,会提示你有提交变换,可以通过撤回命令git restore
放弃提交的修改 -
git commit -m "日志信息" 文件名
提交至本地仓库,-
warning: LF will be replaced by CRLF in test.txt. The file will have its original line endings in your working directory 生成了另一个文件版本号和日志信息 [master 7d03c47] second commit git无法
-
-