01Git介绍

目标

掌握git的基本定义和

Git是什么

  • Git版本控制系统一个分布式的系统,用来保存工程源代码历史状态(游戏存档)的命令行工具
  • Git是一个命令行(小黑窗)工具,用于版本控制(存档器)

Git的作用是什么?

  • 版本管理工具:说人话就是可以记录你敲代码的每一个环节(类似于玩游戏存档)

Git应用场景介绍

  1. 多人开发代码管理

目前我们多人代码的时候,想把代码合并一起是利用最原始的复制粘贴操作。有了git之后,可以一键搞

  1. 异地开发代码管理

实际开发中,我们上班可能会用公司电脑敲代码。有时候回到家里用自己电脑偷偷加个班,以前的做法是备一个U盘,复制粘贴。有了git之后,直接一键搞定。

  1. 版本管理
    比如我现在公司网站已经做出来了1.0版本在使用,现在计划增加一些新功能,但是这个功能不稳定需要经过开发和测试环节,为了不影响现有的稳定版本。以前的做法是把稳定版本单独拷贝一份增加功能,等做好之后再把以前版本给替换掉。有了git之后可以一键搞定。
  2. 版本回滚
    比如这周产品经理提出一个功能,我辛辛苦苦写了一周代码。
    到了下周,产品经理说这个功能不做了,叫我删掉改成其他功能。
    我们把代码删掉之后按照产品经理要求又辛辛苦苦写了一周代码。到了下下周,产品经理说这个功能还是没有上次那个好,还是改成上周的吧…………

    别着急,有了git之后,一键搞定。

版本管理工具还有其他的么?

  • git:目前使用最多的版本管理工具
  • svn:也有公司在用,用法与git类似(相当于腾讯视频和优酷视频)

小结

1. git是什么?

程序员必备的代码版本管理软件

02Git安装流程

目标

掌握安装流程

下载

地址:Git - Downloads

安装

全程默认点击即可,不用修改其他选项 (建议:不要安装在C盘之外的位置)

检测是否安装成功

如果在电脑任意文件夹中点击右键,能够出现Git命令选项,则说明安装成功

mac系统

1.首先使用自带的终端,输入 :  git --version  ,  然后回车如果看到版本号。说明已经安装

2.如果没有看到版本号,可以在终端输入: brew install git  , 然后回车等待安装。 安装成功之后重复步骤1,检查是否安装成功

03配置用户信息

目标

掌握配置用户信息的方式

为啥要配置

安装完git这个软件之后,要做的第一件事情就是设置自己的 用户名邮件地址 ,这样我们就可以知道哪些人提交了什么代码。

配置用户信息命令

git config --global user.email "你的码云账号邮箱"

git config --global user.name "你的码云用户名(可以随便写)"

注意:

  1. 通过 git config --global user.name 和 git config --global user.email 配置的用户名和邮箱地址,会被写入到 C:/Users/用户名文件夹/.gitconfig 文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。
  2. 上面的邮箱和用户名可以不是真实的,也可以后面自行修改

查看所有的全局配置

git config --list --global

查看所有的全局配置

git config --list --global

查看指定的全局配置项

git config user.name

git config user.email

04使用git的基本工作过程

目标

掌握git的基本工作流程

9个常见操作

程序员比较高频的操作有9个。具体如下。

  • 1.新建项目文件夹(只做一次)
  • 2.进入文件夹 (重要)
  • 3.初始化仓库:git init(只做一次)
  • 4.编码
  • 5.添加文件信息: git add .
  • 6.确认添加信息:git commit -m"描述信息"
  • 7.查看详细日志信息:git log
  • 8.查看简略日志信息:git log --oneline
  • 9.版本回滚:git reset --hard 版本号

第123步一个项目只需要一次,456步频繁使用,789步偶尔会用

1.新建文件夹

如果是老项目(已经存在的项目),这步可以省略了。

2.启动进入git命令

进入这个文件夹, 点击右键选择Git Bash Here

打开git命令行工具

(小蓝窗)

3. 初始化项目

在小蓝窗输入 git init

注意:

  1. 如果是老项目,这一步就省略了。
  2. .git目录可能是隐藏的,需要设置为可见才能看到

4. 编码(程序员的日常工作)

在这个目录下正常做开发:创建文件,修改文件内容....

例如: 添加 index.txt,并写入一些内容(任意内容均可)

5. 添加存档

命令:

git add .

注意:这个命令只是将文件信息添加到暂存区,还没有真正存档,需要使用git commit命令确认存档才可以

6. 确认存档

命令 git commit -m "说明"

图示

以上流程是实际开发中主要使用流程

小结

git add .

git commit -m "操作内容"

05git的三个区

目标

理解git三个区的作用,掌握git add commit的用法

三个区

  • 工作区: 处理工作的区域
  • 暂存区: 临时存放的区域
  • 本地git仓库: 最终的存放区域

对比理解

生活

文件夹

  • 工作区: 在你电脑里看到的目录
  • 暂存区: 在.git文件夹内的index中 (二进制记录)
  • 版本库: 指的整个.git文件夹 (也认为是本地仓库)

在代码中的体现

三个区与git命令

06查看提交信息

目标

掌握常见的查看提交信息的命令

查看提交记录

如下两个命令用来查看提交记录

  • git log
  • git log --oneline
  • git reflog:这个命令可以查看你所有的提交的记录

07查看文件状态

目标

掌握查看文件状态的命令,能理解文件的4种状态

内容

没有被托管的文件: 未跟踪

已被托管(曾经add,commit过)的文件:已修改,已暂存,已提交

命令

# 查看仓库文件的状态
git status# 查看简略版信息
git status -s

改动文件之后:

新添加文件:

  • 未跟踪(新增的文件)
  • 已修改(文件曾经被Git记录过了,然后在工作区对他进行了修改)
  • 已暂存(新增的文件,添加到暂存区之后的状态)
  • 已提交(nothing to commit)
    • 表示没有什么东西可以提交了;即所有的内容都已经提交给git仓库了。
    • 有的文档也把这个状态叫做 未修改,意思是自上次提交过后,代码还没有修改过

练习

自己操作文件,能看到4种状态。

08代码恢复

目标

掌握代码恢复的方法

从工作区恢复

改动了代码,想放弃修改(此时并没有add)

git status

git restore 文件名

从暂存区恢复

改动了代码,也add了,此时想放弃。

git reset HEAD 文件名

git checkout -- 文件名

整体回滚

回滚之后

git reset --hard 提交流水号

会导致log信息不全。改用 git reflog

08文件_git忽略文件

目标

了解git忽略文件的作用和配置

讲解

  1. 有的时候, 我们某些文件/文件夹, 不想让git进行跟踪管理
  2. 这种场景下, 我们需要在.git文件夹隔壁, 来个叫做 .gitignore (固定名字)的忽略文件, 并写入忽略规则
  3. 可以编写如下这些规则
# 井号表示注释
# 忽略某个指定文件
password.txt# 忽略文件夹
css# 忽略文件夹下的某个文件
css/index.js# 忽略文件夹下某类文件
css/*.js
  1. 然后根目录新建password.txt, 查看 git追踪到了哪些变化
git status
  1. 发现只新增了.gitignore, 符合规则的都忽略掉了

小结

  1. 如何设置git忽略文件?
  • 在.git文件夹隔壁建立一个.gitignore文件, 写入相关语法配置即可忽略此仓库文件夹下符合规则的文件夹/文件

09远端仓库介绍

目标

什么是远端仓库

远端(远程)仓库其实就是远程的git服务器,帮我们存储代码的服务器。

  • 本地git存储:一旦你电脑丢了或者硬盘损坏,直接扑街
  • 远程git存储:如果你电脑坏了换了一个新的,只需要从网上重新下载即可

常见的远程仓库有哪些?

(1)github:免费。国外服务器,访问不稳定 。"全球最大的同性交友网站"

  • 学习时候可以用,工作中有的小公司为了省钱也会用

(2)码云:免费。国内服务器。

(3)gitlab:

(4)私服:公司自己机房的服务器(工作中遇到)

以上远程仓库使用流程几乎一致。

远程仓库的作用

多人协作

远程仓库的使用流程

leader(仓库的创建者,有最高的权限)

登录远程仓库,建立空项目;

给成员添加权限

成员

  1. 登录远程仓库
  2. 把代码拉到本地
  3. 本地编辑,保存,提交代码
  4. 同步到远程

小结

10远程仓库使用示例

目标

以码云为例,掌握远程仓库的使用

1.在码云网站

建立仓库

2.将远程仓库克隆到本地

git clone 仓库网址

git clone:克隆,将整个远程仓库克隆到本地

  • 这个命名相当于拉取所有的代码(将整个远程仓库文件夹copy到你的本地)
  • 这个命令一般只会在项目开始的时候执行一次

它会在本地创建目录。

3.本地编写代码

git add . 与git commit -m“添加文件信息“

4.将本地代码推送到远程

git push

5.将远程代码拉取到本地

git pull :拉取,用于多人开发。比如别人写的代码文件提交到远程仓库,通过这个命令就可以将远程仓库代码拉取到本地

  • 这个命令不会拉取所有代码,只是拉取远程上面新增的代码(把别人写的代码合并到你的本地)
  • 这个命令,在多人开发的时候建议每天上班前执行一次

11远端仓库多人开发配置流程

目标

掌握多人开发的基本流程

内容

  1. leader(仓库的创建者)邀请其他开发者小花
  2. 小花成为开发者
  3. 小花clone 代码
  4. 小花正常开发项目
    1. git add .
    2. git commit -m ""
  1. 小花提交代码
    1. git push

整体图示

git pull 的常见错误

1. 在pull之前要记得commit

  1. 合并冲突

合并:把两个版本的代码合在一起。

冲突:合并失败。

例如:

  1. A同学改了a.txt的第一行,提交到了远程;
  2. B同学本地仓库也改了a.txt的第一行,并commit
  3. B同学git pull(从远程拉下来) 出现错误:两个人改了同一地方。

处理:

  1. 手动解决问题。看看使用什么代码
  2. add commit

  1. git pull
  2. git push

12远程仓库SSH配置

目标

掌握远端仓库的SSH配置方式

两种访问方式

远程仓库有两种访问方式,分别是HTTPSSSH

  • HTTPS:零配置;但是每次访问仓库时,需要重复输入的账号和密码才能访问成功(现在不需要了)
  • SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入账号和密码。公司中也实际开发推荐使用SSH方式访问远程仓库

SSH 介绍

加密通讯协议

SSH key 的作用:实现本地仓库和 Github 之间免登录的加密数据传输。

SSH key 的好处:免登录身份认证、数据加密传输。

SSH key 由两部分组成,分别是:

  • id_rsa(私钥文件,存放于客户端的电脑中即可)
  • id_rsa.pub(公钥文件,需要配置到远端服务器 中)

SSH配置流程

  1. 打开 Git Bash
  2. 输入命令:ssh-keygen -t rsa -C '邮箱'
    1. 这里的邮箱要与 全局配置 (git config --global user.email) 以及 码云上的登记邮箱一致
    2. 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件
  1. 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容

  2. 在你的远程仓库网址, 点击头像 -> 设置 -> SSH 公钥 -> 粘贴

工作过程

小结

11分支介绍

问题导入

比如你的网站第一个版本已经做好发布了,功能也很稳定。现在准备新增一些功能开发2.0版本,问题是:如何去写代码?

如果在1.0的版本的基础上继续开发,那如何确保1.0的代码稳定呢? 程序员的做法:切分支。

图示:

理解分支

分支的本质是:一个指向某个版本的链接。

  1. 分支的作用是什么?
  • 可以独立开发和维护提交版本记录, 和别的分支互不影响, 尤其多人开发同一个项目, 可以分别控制自己的代码
  1. 分支内功能开发完毕后, 需要最后一步做什么?
  • 合并回到主分支, 保证最后主分支有所有模块的代码, 最后统一交付

分支的应用场景

  1. 开发时按功能模块切分支
    1. 例如:有5个页面,切5个分支
  1. 有bug时切分支开解决bug

git分支相关命令

Git命名

作用

详细描述

git branch

查看当前工作分支

git branch 分支名

新建子分支

新建一个小号存档,把当前存档备份到小号中

git checkout 分支名

切换工作分支

切换当前的账号(换小号刷装备)

git merge分支名

合并分支

把子分支代码合并到主分支(小号刷得装备移到大号上面)

git branch -d 分支名

删除子分支(慎用)

把某一个分支删除

12.分支相关的典型操作

1. 查看分支

命令:git branch

功能:查看所有的分支

说明:项目在初始时,就会有一个默认的分支,名字是:master。表示主分支。

2.新建分支

命令: git branch 分支名

功能:创建新分支

示例: git branch v2

图示:

3.切换分支

命令:git checkout 分支名 (创建分支之后,你的代码默认还是在主分支,需要切换工作分支到子分支)

功能:切换分支

示例:git checkout v2

图示:

注意:切换分支时,要先commit

4.在新的分支上进行编码

提交代码的时候,指针也在移动

// 改代码

git add .

git commit -m "提交3"

// 改代码

git add .

git commit -m "提交4"

5.合并分支

格式: git merge 分支名

注意:merge之前,必须commit

合并:假设当前在master分支,把v2分支的代码合并过来。合并的目的:是master中的代码和v2的代码是一样。让master上也具有v2的代码。

6.删除分支

格式:git branch -d 分支名

示例:git branch -d v2

注意:

  1. 删除分支,也需要切换当前工作分支为其他分支
  2. 删除分支,不会导致代码丢失

13.git解决代码冲突

目标

理解出现冲突的原因,掌握解决冲突的方法

原因

两次提交改了同一个地方的代码。

测试1

步骤:

新建文件: 1.txt

写入内容:1111

提交。

切换分支:dev

写入内容: 1111dev

提交

切换分支: master

写入内容:master111

提交

merge dev

现状

合并:把两个版本的代码合在一起。

冲突:合并失败。

例如:

  1. A同学改了a.txt的第一行,提交到了远程;
  2. B同学本地仓库也改了a.txt的第一行,并commit
  3. B同学git pull(从远程拉下来) 出现错误:两个人改了同一地方。

处理:

  1. 手动解决问题。看看使用什么代码
  2. add commit

  1. git pull
  2. git push

14. 本地分支与远程分支

推送与拉取分支代码到远程仓库

  • 1.查看远程分支: git remote show 仓库别名
  • 2.推送分支代码到远程仓库 : git push -u origin 新分支名称
    • 小技巧 :  根本不需要记这个指令, 直接 git push即可。  如果是分支代码,你的git会自动给你提示,并且在下方告诉你推送这个分支正确的命名是什么。 到时候直接 CV 即可。
  • 3.拉取某个远程分支到本地仓库: git pull origin 分支名

附录:git常用命令

Git命名

作用

详细描述

git init

初始化git仓库(类似于玩游戏新建一个存档文件)

在当前文件夹中新建一个 .git隐藏文件夹

git add .

添加文件信息(相当于游戏开始存档)

把要提交的文件的信息添加到暂存区中(常用

git commit -m"描述信息"

确认添加信息 (确认存档)

将暂存区中的文件提交到本地仓库中(常用

git config --global user.email "you@example.com

"

设置邮箱

第一次使用git会让你输入邮箱

git config --global user.name "Your Name"

设置用户名

第一次使用git会让你输入用户名

git reset --hard 版本号

版本回滚

(游戏回档)

可以让你的文件回退到历史某一个版本

git  log

查看详细日志(存档日志)

会显示你的每一次存档信息

git  log --oneline

查看简略版日志

快速查看版本号

git reflog

查看所有日志(包含回滚日志)

回档回错了会用到

git clone '远程仓库地址'

克隆远程仓库

把远程仓库所有文件下载到本地

git push

推送代码到远程仓库

把当前电脑已经commit过的代码上传到远程仓库

git push origin 分支名

推送指定分支

一般不用记,git push如果不行会提示这个命令

git pull

拉取远程仓库到本地

把远程仓库上别人push的代码同步到自己的本地电脑(只有多人开发才生效)

git pull origin 分支名

拉取远程仓库指定分支到本地

git branch

查看当前工作分支

git branch 分支名

新建子分支

新建一个小号存档,把当前存档备份到小号中

git checkout 分支名

切换工作分支

切换当前的账号(换小号刷装备)

git merge分支名

合并分支

把子分支代码合并到主分支(小号刷得装备移到大号上面)

git branch -d 分支名

删除子分支(慎用)

把某一个分支删除

  • 课后学习传送门:Git命令大全 - 简书

vscode的插件

git commit

问题点总结

  • 1.新建项目的文件夹,要进到文件夹里面去之后, 右键点击git bash here
  • 2.git init 不要写错, 出现一个.git隐藏文件夹, 如果没有出现这个文件夹,检查一下自己的电脑隐藏文件夹是不是不显示.
    • 如果不小心项目文件夹建错了,就可以删掉.git文件夹,相当于删档操作(慎用)
    • git一次只能写一个命令,千万不要两个命令连着写
  • 3.注意每一个命令之间的空格
    git add .
    git commit -m"描述的信息"
    这两句代码  add 和后面的点 有空格.   commit 和-m中间也有空格.
  • 4.第一次提交会出现让你输入邮箱和用户名, 一行代码一行代码的执行. 复制的时候不要把后面的空格给复制
    • git不能按快捷键CTRL+CV来复制,要选中之后点击右键通过copy和paste来复制粘贴
  • 5.有时候git命名行工具会卡死: 多按几次 q 键就可以退出卡死(相当于卡屏修复)

git的了解和开发安装 以及分支合集相关推荐

  1. Git码云项目开发中常用分支

    Git码云项目开发中常用分支 master分支,即主分支.任何项目都必须有个这个分支.对项目进行tag或发布版本等操作,都必须在该分支上进行. develop分支,即开发分支,从master分支上检出 ...

  2. c4d python 插件_【影视后期必知干货!C4D插件的安装及类型合集】- 环球网校

    [摘要]我不知道C4d什么时候开始流行,要想玩好C4d,各种C4D插件的安装是必不可少的.C4d软件制作的各种酷炫视觉效果层出不穷,吸引着人们的眼球.作为一个设计师,我们当然应该跟上设计的潮流.本篇文 ...

  3. Android开发推荐资料大合集 【转载自51CTO】

    Android开发资料大集合 Android开发问题集锦1~6集合 http://down.51cto.com/data/440230 Android画图学习 http://down.51cto.co ...

  4. MySQL安装及应用合集(2):zip安裝包的安装方式

    一.文件下载 在 MySQL官网上,点击DOWNLOADS ,可以进入到下载首页,拉到最底下的 MySQL Community (GPL) Downloads 点击进入到产品下载页面. 产品下载页面有 ...

  5. MySQL安装及应用合集(3):msi安裝包的安装方式

    一.文件下载 在 MySQL官网上,点击DOWNLOADS ,可以进入到下载首页,拉到最底下的 MySQL Community (GPL) Downloads点击进入到产品下载页面. 产品下载页面有很 ...

  6. .Net开发者开发效率提升大合集

    简介 本文来自于我正在GitHub上发布的.Net开发者工具箱项目,项目地址:dotnet-developer-toolbox ,后期会继续更新更多的优质内容,如有需要可关注原项目. 本项目整理了一些 ...

  7. Java初级开发工程师面试题合集

    一.多线程 什么是多线程? ​ 多线程是指程序中包含多个流,即在一个程序中可以同时进行多个不同的线程来执行不同的任务 多线程的优劣? ​ 优点:可以提高CPU利用率, 提高了程序的效率, 单个程序可以 ...

  8. python模块安装(大合集)

    有些欢迎加入我们卧虎藏龙的python讨论qq群:996113038 ┉┉┉┉┉┉ 『导语』 ┉┉┉┉┉┉ 在学习python的过程中 安装各种模块是迈不过去坎 有些模块安装起来简直令人崩溃 今天就给 ...

  9. AR开发必备素材网站合集

    本文汇总了AIRX团队平时开发AR内容时所需的一些模型网站. 以下内容由公众号:AIRX社区(国内领先的AI.AR.VR技术学习与交流平台) 整理 1.Unity Asset Store Unity就 ...

最新文章

  1. 行业观察 | 机器人Ameca挣脱「灵魂」枷锁觉醒?
  2. OTA和Recovery系统升级流程介绍
  3. 城步一中2021高考成绩查询,2017城步一中录取分数线(附高考成绩喜报)
  4. 软件工程讲义 9 创新的出路 走进作坊
  5. 杀掉僵尸 MapReduce 任务的两种方式
  6. Elasticsearch--入门-删除数据bulk批量操作导入样本测试数据---全文检索引擎ElasticSearch工作笔记008
  7. 索引sql server_SQL Server索引–系列介绍
  8. elasticsearch 清理数据后硬盘不释放_电脑C盘正确的5种清理方法,你还不知道?学会后轻松释放20G空间...
  9. 【python实战】使用 pygame 写一个 flappy-bird 类小游戏 | 涉及思路+项目结构+代码详解 | 新手向
  10. 对JavaScript解析JSON格式数据的理解
  11. 牛股轮回另类可能:未来的牛股在哪?
  12. PageAdmin CMS网站建设教程:自定义字段如何关联栏目表
  13. DOM事件+正则表达式
  14. 场景实践:使用函数计算打包下载OSS文件
  15. iOS 指纹解锁 检测指纹信息变更
  16. 采集资源结束后,图片不显示解决办法
  17. bugku ctf 你必须让他停下
  18. 【时间序列】从移动平均到指数平滑
  19. thumbnailator图片压缩和碰见的问题修复
  20. 几款主流的浏览器速度测试

热门文章

  1. quantenna测试RF射频性能简单说明
  2. ubuntu1804安装opencv
  3. 一款小巧的kafka测试工具
  4. 12、TWS API和IB中的订单管理
  5. CodeCombat代码全记录(Python学习利器)--边地森林(第二章)代码4
  6. 从《青云志》看完美世界如何玩转影游联动,打造S级手游
  7. Wolfram | Alpha 之 15 种非数学领域的使用
  8. json与j对象的关系和与对象的相互转换
  9. PostgreSQL数据库自带的命令行工具--psql
  10. 听 小城大事 大城大事 总结出来的故事(上篇)