文章目录
Git学习笔记
Git简介
Git是世界上最先进的版本控制系统,用于记录一个活若干文件内容变化,以便将来查特定版本修订情况的软件,可以有效、高速地处理从很小到非常大的项目版本管理。
Git的安装
官网安装:Git官网
1.找到Download按钮
2.选择自己电脑相应系统的位数并下载安装包
3.运行安装包
注意事项:
安装路径最好不要有中文
安装组件为默认即可
-
一路默认就行
-
验证安装在桌面空白处点击右键出现Git Gui和Git Bash即可
-
在安装好后进行全局配置:在桌面空白处右键,点击Git Bash Here打开Git命令行窗口,执行两个命令
git config --global user.name "Github用户名" git config --global user.email "Github邮箱地址"
Git的使用
本地仓库
工作流程
Git本地操作的三个区域
-
Git Repository(Git 仓库):最终确定的文件保存到仓库,称为一个新的版本,并对其他人可见,初始化后的.git文件夹可以理解为本地Git仓库
-
暂存区:暂存已经修改的文件最后统一提交到Git仓库中,在.git文件夹中有一个index文件,这个文件名已经说明是索引的意思了,它记录着哪些文件属于暂存区
-
工作区(Working Directory):执行添加,编辑,修改文件等动作,git还为我们自动生成了一个分支master以及指向该分支的指针HEAD,最终我们提交到版本库中的代码实际上是进入了master分支
如果想要详细了解三个区请移步:Git中工作区、暂存区和版本库三者关系
工作流程:
- Git操作者先在工作区增加,编辑,修改相关文件
- 将在工作区添加,编辑,修改的相关文件提交到暂存区
- 将暂存区的文件统一提交到Git仓库中
本地仓库操作
创建仓库
-
创建目录:
mkdir 目录名称
-
进入目录:
cd 目录名称
-
Git仓库初始化:
git init
-
查看初试化是否成功:
ls -a
查看是否出现隐藏目录.git,这个目录尽量不要更改,也不要删除否则会引发意想不到到的后果
常用仓库命令
-
查看当前仓库状态:
git status
-
添加到缓存区:
git add 文件名 添加多个文件:git add 文件名1 文件名2 文件名3 添加当前目录所有文件: git add .
-
提交至仓库:
git commit -m "注释内容" //注释可以写行文也可以写中文
-
查看暂存区中有哪些文件
git ls-files
-
删除文件:
仅删除工作区的文件:rm 文件名仅删除暂存区的文件:git rm --cached 文件名工作区和暂存区一起删除:git rm 文件名通过暂存区文件恢复工作区文件:git checkout -- 文件名
Git版本回退
-
查看时间点:确定需要回溯的时间点
git log --pretty=oneline//可以显示注释却第一字段为提交编号
-
回退操作
git reset --hard 提交编号
回退操作后无法再查到之前的版本号
-
回退后再回到最新版本号:查看历史操作
git reflog//第一个字段为版本号
远程仓库
远程仓库的创建
在Github上的Repositories的New中创建一个仓库
远程仓库的使用
基于HTTPS协议
-
在本地通过Git bash创建一个目录并进入这个目录
-
将Github上新建的仓库clone下来
git clone https网址
-
在仓库上做相应的操作:
提交缓存区,提交本地仓库,提交线上仓库,拉取线上仓库
提交缓存区:与使用本地仓库相同
git add 文件名代码
提交本地仓库:与使用本地仓库相同
git commit -m "注释"
提交到线上仓库:
git push
提交成功提示:
拉取线上仓库:获得最新版本保持线上线下内容相同
git pull
Git相关报错
1.网络超时错误:
fatal: unable to access 'https://github.com/Kaiser-yuan/pro_one.git/': OpenSSL S
SL_read: Connection was reset, errno 10054
解决方法:一般重新提交就行了或者把VPN关了再试一次
基于SSH协议
与HTTPS相比只是影响github对于用户的身份鉴权即每次上传到仓库的时候少一个用户名登录的步骤而对于git的具体操作没有任何影响。
对于创建公钥私钥的SSH教程:GitHub教程 SSH keys配置
分支管理
分支管理
master分支
在版本回退时,每次提交都会有记录,Git把他们串成时间轴,这个时间轴被称为master分支,在实际开发的时候,往往是多人同时进行开发,因此只有一个分支时无法同时满足多人开发需求的,并且一个分支上的工作并不影响其他分支的正常使用,会更加安全。
分支指令
-
查看分支:
git branch
当前分支标记“*”
-
创建分支:
git branch 分支名
-
切换分支:
git checkout 分支名
切换完分支再提交就可以将项目目录下的文件提交到当前的分支,并且在不同的分支下提交的不同文件在不同的分支下,即使重名内容也是不同的。
-
创建并切换分支:
git checkout -b 分支名
-
删除分支:
git branch -d 分支名
分支在删除前一定要切出,不可以边使用边删除
删除的操作一般在合并以后
-
合并分支:
git merge 被合并的分支名
合并后文件名相同的内容会被覆盖
冲突的产生和解决
冲突的产生
当其他人修改了仓库中的文件,但本地并没有执行pull操作的前提下,在本地修改了相同的文件,并进行push操作,这个时候Git会给我们报冲突的错误,提示我们在push之前需要先pull
冲突的解决
- 执行pull操作
- Git仓库会将两次提交的内容合并即冲突合并
- 和你产生冲突的人商量保留哪些代码
- 重新pull提交即可
忽略文件
作用
可以将我们不想提交的文档不提交到远程仓库
格式与规则
后缀为.gitignore的文件,用于声明忽略或者不忽略的文件的规则,规则对当前目录及其子目录有效,由于该文件没有文件名,无法在windows目录下直接创建,可以在Git Bash中,通过 touch命令实现
规则:
1. /文件夹名称/ 过滤整个文件夹
2. *.zip 过滤所有zip文件
3. /文件夹名称/文件名 过滤某个具体文件
4. 文件名 不过滤某个具体文件
图形管理工具
- Github For Desktop
- Scource tree
- TortoiseGit