Git -- 入门这一篇就够了 (入门必备,超硬核)

关于 安装 &配置 基础命令 中文乱码 别名 回退与反回退 gitignore 配置 Git 托管服务 那些事(本文章带*号的标题都是重点)
@[toc](【Git 第一步 -- 启航】)
一、Git 基本概念
git 是什么,有什么用处呢?
使用场景
备份
代码还原
协同开发
追溯他人编写代码时间和编写人(找人背锅😜)(代替云盘和 U 盘的存在)
常用管理工具有 SVN 和 CVS 集中式控制版本工具等 Git 为开源分布式版本控制工具(重)(学了 svm 学 gif 的同学建议完全忘掉 svm 学习,不然会乱)
二、git 工作流程

最重要的概念是远程仓库和本地仓库,远程仓库可以是 github,gitee,giitlab...
三、Git 安装
下载地址: https://git-scm.com/download(傻瓜式安装,全都默认就行)

安装后如果右键有Git GUI Here
和 Git Bash Here
两个选项就说明安装的没太大问题
🎏Git GUI : Git 提供的图像界面工具🎏Git Bash : 提供的命令工具,相当于 linux 的一个小窗口

以下例子都是在: Git Bash 演示,所以需要一点基本的linux
命令,提前列举一下:
Is [- all] 查看当前目录文件
cat [文件名字] 查看文件内容
touch [文件名字] 创建文件
vi [文件名字] vi 编辑器为了方便展示效果,也可以用记事本
四、基本配置
打开 git bash

重要一步:设置用户名和邮箱地址,因为 git 要跟踪是谁提交的,即使是个人开发也要跟踪,所以一定要配置,不然后面操作会报错
设置邮箱和用户名
查看用户名和邮箱
4.1 解决中文乱码问题
由于是在 window 系统,或多或少还是会有一些不兼容的问题,解决办法:
右键打开 git.bash
在 ${git_home}/etc/bash.bashrc (就是安装 Git 的根文件下的 etc 文件)文件最后加入下面两行代码
五、创建本地仓库
建立一个空文件,这里命名为 test,右键打开 git.bash
执行命令
即可成功初始化仓库,如下图

如果看不见这个文件,设置显示隐藏文件就行
六、常用命令
6.1 状态
如图提交代码流程中文件的状态(工作区指的是除了该目录下除了
.git
仓库之外的文件):
对于新建的文件, 则为未跟踪状态(untracked),此时 git 没有对该文件进行管理,
对于已跟踪未修改的文件,此时还没有提交到仓库,则为未暂存状态(unstaged)
在学习 GIt 的时候,会有一个疑问:为什么不进行将修改的代码或添加的文件从工作区直接提交到仓库呢?
暂存区的用处:可以选择提交文件
情景一:假设你是开发人员,修改了许多文件,对全部文件进行提交,那有没有想过里面每个文件都是实现不同的模块呢,这一次提交即为一次版本,但是里面修改了许多文件,此时当你回滚历史时,你会无所适从不知道哪个版本包含哪些功能实现,
情景二:假设要开发模块 B,但是模块 A 出现了 Bug,那就要先修改提交模块 A 的 bug 版本,再进行模块 B 的开发,这样可以提高历史的清晰性,
还有一个疑问,为什么不修改一个文件,提交一次仓库呢,那有没有想过,如果是这样,会大大增加工作量,修改一个文件需要提交一次,使用暂存区则在开发好后,选择需要提交的文件进行提交.
修改文件,文件下的不同状态
git add 工作区 => 暂存区 git commit 暂存区 => 本地仓库
此外 Git 中的命令是分大小写的
6.2 *创建文件命令
在 bash 中输入指令(创建文件)

6.3 *查看状态命令

可以看到当前状态为为跟踪(对应图中的文件创建)
6.4*添加到暂存区命令
其中. 是通配符,全部文件添加,也可以指定文件名

查看修改状态

6.5*添加到仓库命令
他的操作是将缓存区的文件送往仓库,所以不需要指定文件

6,6 *查看日志命令

log 后面其实还有四个可选项
--all 显示全部分支
--pretty=online 将所有显示为一行
--abbrev-commit 使得输出的 commitId 更简短( 从十几位数字变为七八位)
--graph 以图的形式显示
七、别名配置
在项目开发中,如果想实现一个指令,但是代码很长,那怎么让他用较短命令实现呢,我们可以使用别名。
打开用户目录创建
.bashrc
文件放入代码(在各种语言都有类似的 alias 设置别名):
代码:
alias 自定义命令 = '命令'
例子:

效果: 原本需要一大串代码现在只需要几个字符,是不是比原先的简洁多了
![]()
7.1 vi 编辑器
生成一个文件,并开始编辑(如果编辑不了按Insert
键如:

编辑结束按
Esc
输入:wq
即可退出编辑。用上述的方法,将创建文件放置缓存区,再到仓库,查看 log


八、 *版本回退
只需要一行代码即可(commitID 是你的提交记录,版本是按照时间从上到下)git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
菜鸟教程
例子:
首先通过clear
清空页面

分别查看日志,然后版本回退上面的操作,再看日志,


之前所编辑的文本消失不见,回退成功
九、*撤销版本回退
在上述我们进行版本回退之后想要撤销如何操作呢
只需要找到原来版本的 commitID 同样的命令行即可,见图:
![]()
问题:如果之前的 commitID 当前命令行没有怎么办呢(比如:clear 页面)
一行代码即可(查看参考日志 reference log)

便可知道上次记录的 commitID(这是因为 git 的所有操作都是 被记录在案的 即使 你是用 --hard 全部文件删除也可以返回)
十、*gitignore(取消 git 跟踪管理)
我们通过命令touch .gitignore
创建文件.gitignore
,使用vi
命令编辑

退出(vi 编辑,不知道如何退出的,上面讲解有说,不要忘了哦)
十一、Git 托管服务
即远程仓库

常见的托管服务
(全球最大交友平台) Github 开源 (只支持 git 管理,网速慢)国内的 码云 Gitee (优点,速度快)Gitlab(企业常用,私人)...
11.1 注册码云账号
注册并激活码云账号( 注册页面地址:https://gitee.com/signup
)
创建仓库


生成成功

11.2 配置 SSH 公钥
在上传的时候都需要验证你的身份,可以时手机号码验证等,不过一般常用的使用公钥 SSH
流程:
生成公钥
不断回车(不需要配置信息)如果需要再自己配置

获取公钥
其实就是查看在.ssh
目录下的id_rsa.pub
文件

复制公钥
打开 Gitee 设置


点击确定,并输入密码
11.3 连接配置(重要)
这里是码云 所以是 gitee.com 如果是 github 改为 github.com 即可


成功配置托管服务!!
评论