一.Git基础
1.Git介绍
Git是目前世界上最先进的分布式版本控制系统
- 版本控制系统:
记录每个迭代版本的信息
版本号 | 文件名 | 操作用户 | 日志 | 修改时间 |
---|---|---|---|---|
1 | Test.py | well | 修改标题 | 2020/04/18/17:15 |
2 | Test.py | jack | 优化性能 | 2020/04/18/18:00 |
3 | Test.py | esion | 修复bug | 2020/04/18/19:15 |
4 | Test.py | jack | 功能更新 | 2020/04/18/20:15 |
2.Git与Github
2.1.两者区别
- Git
是一个分布式版本控制系统,简单来说它就是一个软件,用于记录一个或多干个文件迭代信息,以便将来查阅某个版本修订情况的软件
- Github
是一个为用户提供Git服务的网站,简单说就是一个可以存放代码的地方,也可以是其他东西,Github除了提供管理Git的Web界面外,还提供了订阅,关注,讨论组,在线编辑器等丰富的功能。 Github被称之为全球最大的基友网站。
3.Git安装
3.1.下载安装包,进行安装
3.2.默认安装即可,最后的view就不要勾选了
二.Git的使用
1.本地仓库
1.1. 工作流程
- Git本地操作的三个区域->示意图:
- 工作流程->示意图:
1.2.本地仓库操作
什么是仓库呢?仓库又名为版本库,英文名repository,可以简单的理解成是一个目录,
用于存放代码,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,
删除等变更状态Git都能跟踪到。
- 在安装好后首次使用需要进行全局配置,进入Git bash here 进入Git命令行窗口,输入以下命令:
Config --global user.name “xxx” 配置用户名
Config --global user.email “xxx” 配置邮箱
在多人协作项目中,用于身份的甄别
- 创建仓库
当我们需要让Git去管理某个新项目/已存在的项目,就需要创建仓库了。
注意,创建仓库的目录不一定要求是空目录,选择一个非空目录也是可以的,
但是不建议在现有的项目上来学习Git。
- 创建空目录
Mkdir file_name
进入目录
Git仓库初始化
Git init
生成git的隐式目录
1.3. \Git常用指令**
- 查看当前状态
git status
添加至缓存区
添加一个文件
git add file_name
添加多个文件
git add file_1 file_2 file_3
添加全部文件
git add .
移除缓存区文件
移出一个文件
git rm -r --cached file_name
移出多个文件
git rm -r --cached .
移出全部文件
git rm -r --cached .idea
提交至版本库
git commit -m “更新内容描述”
1.4.版本回退
查看版本,确定需要回到的时间点
版本号仅会显示当前,以及当前以前的版本信息
commit bc22b1d47fe55db8901129da1f6c74fdbbddd5b8 (HEAD -> master) 目前版本
获得详细版本状态信息
git log
获得版本提交编号,与注释内容,一行显示
git log --pretty=oneline
回退
git reset --hard 版本号
回退至历史版本后,在回退到当前,则需要查看历史操作,得到想要commit_id
git reflog
小结:
回退各个时间段的版本,需获得commit id,进行 git reset –hard commit_id
再次回到当前版本,需要进行reflog直接获得历史操作,以及获得7位commit_id
commit_id可以不用输入完整,git会自动识别,但也不能太少,可能会出现重复,至少写前4位字符
1.5. 忽略文件
- 应用场景
在项目目录下有很多万年不变的文件目录,例如css,js,images等,
或者还有一些目录即便有改动,我们也不想让其提交到线上仓库。
- 实现流程
忽略文件需要新建一个名为.gitignore的规则文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录与子目录生效
注意:该文件没有文件名,没办法直接在windows目录下创建,可以通过命令行创建。
常见规则 | |
---|---|
过滤整个子目录 | /mtk |
过滤当前目录与子目录中.zip文件 | *.zip |
过滤具体文件 | /mtk/.doc |
不过滤该文件 | ! Test.py |
创建过滤文件
touch .gitignore
2.远程仓库
线上仓库的操作学习以GIthub为例
线上仓库创建,两种常规使用方式
基于http协议
创建空目录,名称就称为WellHome
Mkdir WellHome
使用clone指令,克隆线上仓库到本地
git clone source.git
仓库基本操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)
提交当线上仓库的指令
git push
若提交后,返回requested 403 因为需要鉴权,则需要权限
需要修改配置文件,在请求url 中添加用户名与密码
拉取线上仓库
git pull
在每天工作的第一件事
git pull
每天下班时做的最后一件事
git push
基于SSH协议
需安装OpenSSH(推荐使用)
Https与SSH协议区别:该方式与前面https方式相比,至少影响github对于用户的身份鉴权方式,对于git 的具体操作(如提交本地,添加注释,提交远程等操作)没有任何影响
生成公私钥对指令(需自行安装OpenSSH)
ssh-keygen -t rsa -C “注册邮箱”,直接回车继续,返回提示生成的公私钥对的路径
进入提示目录下,找到公钥文件,添加到github中,并编写title
clone 仓库
git clone git_ssh地址 — 返回提示yes or no 输入yes即可
分支管理
- 分支示意图
在版本回退的操作中,每次提交后都会有记录,Git把它们串成时间线,形成类型时间轴的存在,这个时间轴就是一个分支,我们称为master分支(主分支)。
在多人团队协作开发的项目中,一个分支是无法满足多人同时开发的需求的,并且分支上工作并不影响他人正常使用,会更加安全,Git鼓励开发者使用分支去完成开发任务。
分支相关指令 | |
---|---|
查看分支 | git branch |
创建分支 | git branch 名称 |
切换分支 | git checkout 名称 |
删除分支 | git branch -d 名称 |
合并分支 | git merge 被合并名称 |
冲突的产生与解决
当线上与本地仓内容不一致时,git会检测出来,并提示让你先pull
Pull后,git会自动合并代码在改文件中。
解决方法
与变更文件同事沟通,再进行操作
提醒
上班后同步线上代码
图形化管理工具
Github for Desktop
Github出品,功能完善,界面简洁,使用方便。
Source tree
老牌Git GUI管理工具,也号称最好用的管理工具,功能丰富,基本操作和高级操作都非常流畅,适合初学者。
TortoiseGit
对于熟悉SVN的开发人员来说,这个小乌龟是非常友善了,简称tgit,中文名海龟Git,
它与前辈TortoiseSVN都是非常优秀的开源版本控制客户端软件。