Git基础


一.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协议

    1. 创建空目录,名称就称为WellHome

      Mkdir WellHome
    2. 使用clone指令,克隆线上仓库到本地

      git clone source.git
    3. 仓库基本操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)

      提交当线上仓库的指令

      git push

      若提交后,返回requested 403 因为需要鉴权,则需要权限

      需要修改配置文件,在请求url 中添加用户名与密码

    4. 拉取线上仓库

      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都是非常优秀的开源版本控制客户端软件。


Author: Ming Hui
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Ming Hui !
 Previous
接口自动化测试 接口自动化测试
为什么要做接口测试? 在日常前后端开发中,他们之间为什么是独立完成的? 接口的由来:连接前后端,以及移动端 不同端的工作进度不一样,需要对最开始出来的接口,进行接口测试 接口测试带来了哪些好处? 比如调用第三方的接口,淘宝,银行,
2020-07-07
Next 
settings组件分析 settings组件分析
COOKIES_ENABLED 进入 scrapy 包 -> downloadermiddlewares 子包 -> cookies模块中 class CookiesMiddleware: """This middle
2020-06-28