Git基础
1.安装与配置
-
下载与安装:git官网
-
使用入口:
-
win:右键菜单 git bash
-
Mac: 终端
-
-
查看git版本:
git --version
-
使用Git工作之前,我们需要做个一次性的配置。方便后续Git能跟踪到谁做了修改,我们需 要设置对应的用户名与邮箱地址
git config --global user.name "your_username" git config --global user.email "your_email@domain.com" git config --list 查看所有配置
-
注意 git config 命令的 --global 参数,用了这个参数,表示你这台机器上所有的Git仓库都会 使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2.Git 文件的三种状态与工作模式
版本控制就是对文件的版本控制,要对文件进行修改,提交等操作,首先要知道文件当前什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
- Untracked:未跟踪,此文件在文件夹中,但并没有加入到git仓库,不参与版本控制.通过git add 状态变为Staged.
- Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹完全一致.这种类型的文件有两种去处,如果它被修改,而变为Modified.如果使用git rm 移出版本库,则成为Untracked文件.
- Modified:文件已修改,仅仅是修改,并没有进行其他的操作.这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout,则丢弃修改过,返回unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
- Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态.执行git reset HEAD filename取消暂存,文件状态为Modified
#查看制定文件状态
git status [文件名]
#查看所有文件状态
git status
#添加所有文件到暂存区
git add .
#提交暂存区中的内容到本地仓库 -m:提交的信息
git commit -m "信息"
- 工作区:简单理解为电脑中的目录,比如自己创建的本地目录,就是平时存放项目代码的地方
- 暂存区:类似一个缓存区,用于临时存放你的改动,事实上它是一个文件,保存即将提交的列表信息
- 仓库区:就是安全存放数据的位置,这里有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本工作区,一般会有一个.git文件,它是git的版本库,包含了我们修改提交的信息,一般是隐藏的,mac可以使用comand+shift+. 展开
- Remote Repository:远程仓库,一般看作第四种状态,托管代码的服务器(github),可以简单的认为是你项目组中的一台电脑用于远程数据交换
版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来, 每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可 以“还原”。
然后基本的git工作流程就是:
-
在工作中添加,修改文件
-
将需要进行的版本管理的文件放入暂存区域
-
将暂存区域文件提交到git仓库
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
3.本地仓库
什么是仓库?仓库又名版本库,英文名repository,我们可以简单理解为一个目录,用于存放代码的,这个目录里面的所有软件都可以被Git管理起来,每个文件的修改、删除等操作Git都能跟踪到。本地仓库就是未被push到远程仓库的仓库(如github),这个仓库在我们电脑里被git管理。
获取git仓库一般有两种方法:
-
初始化git 本地仓库,新建一个文件自己把它设置为一个仓库进行管理
git init <"file url">
-
从github上克隆仓库
git clone <"github file url">
日常使用只需要记住下图6个命令:
3.1 初始化本地仓库
-
新建一个test文件夹,将其初始化,初始化了一个空的仓库,目录下多了.git目录,.git文件很重要,一般是隐藏的需要手动设置进行显示,它记录了版本的每次改变,关于版本等所有信息都在这个目录里面
git init /Users/xxx/Desktop/test
2.在之前初始化仓库的文件夹中新建一个Hello.txt文件来测试:先执行git status查看文件状态,通过git status 命令看到此时Hello.txt文件在暂存区中。
3.发现Hello.txt文件未被跟踪,然后我们先执行git add . (.是当前目录所有文件,也可以指定文件名)命令,再执行git status
4.发现Hello.txt已经放入暂存区了,等待提交,这时候再执行git commit -m “加入本次提交的记录说明(注释)方便后续查看提交或改动记录”,最后再一次执行git status查看 ** 可以发现提交暂存区文件到本地版本库中。
发现文件已经提交成功了,没有可提交的文件
5.忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立“.gitignore”文件,此文件有如下规则:
1.忽略文件中的空行或以井号(# )开始的行将会被忽略。
2.可以使用Linux通配符。例如∶星号(*)代表任意多个字符,问号(﹖)代表一个字符,方括号([abc] )代表可选字符范围,大括号( {string1,string2……})代表可选的字符串等。
3.如果名称的最前面有一个感叹号( !),表示例外规则,将不被忽略。
4.如果名称的最前面是一个路径分隔符(/ ),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
5.如果名称的最后面是一个路径分隔符(/ ),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目 录都忽略)。
例如以下这些实例:
*.txt #忽略所有的.txt结尾的文件
!lib.txt #但lib.txt除外
/temp #进忽略项目根目录下的TODO文件,不包括其他目录temp
bulid/ #忽略bulid目录下的所有文件
doc/*.txt #会忽略doc/notes.txt 但是不包括doc/sever/arch.txt
6.时光穿梭机—版本回退
步骤:
1.查看版本,确定需要回到的刻点
指令:git log(log是日志的意思)或 git log --pretty=online (常用)
我们将Hello.txt中内容修改一下再次add和commit
然后我们进行版本回退,首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交645465d...
,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
回退上一版本
也可以利用另一种方式:
git reset --hard 提交编号(commit id)
要是不记得刚才的版本号了,可以使用以下命令:
git reflog
3.2 从github上克隆远程仓库
git clone <url>
4.将本地仓库托管到github
1.链接远程仓库到本地(要在当前文件路径下操作)
git remote add origin <远程仓库链接>
2.将本地文件推送到远程仓库
git push 仓库名 分支名
eg:
git push test main
3.输入用户名和密码 但是这种方式github已经禁止了,所以采用token令牌验证
输入用户名
获取token令牌-->github中的settings->developer settings->personal access tokens-->tokens(classic)-->复制tokens
输入密码(用tokens代替密码)