git的安装流程本文不谈,博客论坛上有很多详细的流程介绍(需要自行搜索即可)

Git是什么

  • Git是目前世界上最先进的分布式版本控制系统(没有之一)Git版本控制系统一个分布式的系统,是用来保存工程源代码历史状态(游戏存档)的命令行工具

  • Git是一个命令行(小黑窗)工具,用于版本控制(存档器)

  • Git有什么特点?简单来说就是:高端大气上档次!

Git应用场景介绍

  1. 多人开发代码管理

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

  1. 异地开发代码管理

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

  1. 版本管理 比如我现在公司网站已经做出来了1.0版本在使用,现在计划增加一些新功能,但是这个功能不稳定需要经过开发和测试环节,为了不影响现有的稳定版本。以前的做法是把稳定版本单独拷贝一份增加功能,等做好之后再把以前版本给替换掉。有了git之后可以一键搞定。

  2. 版本回滚: 比如这周产品经理提出一个功能,我辛辛苦苦写了一周代码。 到了下周,产品经理说这个功能不做了,叫我删掉改成其他功能。 我们把代码删掉之后按照产品经理要求又辛辛苦苦写了一周代码。到了下下周,产品经理说这个功能还是没有上次那个好,还是改成上周的吧…………

Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。

微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。

分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

-----引用廖雪峰的集中式与分布式(向大佬致敬)

Git安装流程

目标

掌握安装流程

下载

地址: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 :::info 查看所有的全局配置 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 ""

  5. 小花提交代码

    1. git push

整体图示

git pull 的常见错误

  1. 在pull之前要记得commit

  2. 合并冲突

合并:把两个版本的代码合在一起。 冲突:合并失败。 例如:

  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 两个文件

  3. 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容

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

工作过程

小结

11分支介绍

问题导入

比如你的网站第一个版本已经做好发布了,功能也很稳定。现在准备新增一些功能开发2.0版本,问题是:如何去写代码? 如果在1.0的版本的基础上继续开发,那如何确保1.0的代码稳定呢? 程序员的做法:切分支。

图示:

理解分支

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

  1. 分支的作用是什么?

  • 可以独立开发和维护提交版本记录, 和别的分支互不影响, 尤其多人开发同一个项目, 可以分别控制自己的代码

  1. 分支内功能开发完毕后, 需要最后一步做什么?

  • 合并回到主分支, 保证最后主分支有所有模块的代码, 最后统一交付

分支的应用场景

  1. 开发时按功能模块切分支

    1. 例如:有5个页面,切5个分支

  2. 有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.在新的分支上进行编码

提交代码的时候,指针也在移动 :::info // 改代码 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的基本使用方法教程(入门级)相关推荐

  1. golang导入git包_使用go module导入本地包的方法教程详解

    go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module 将是Go语言默认的依赖管理工具.到今天 Go1.14 版本推出之后 Go mod ...

  2. go语言导入git包_使用go module导入本地包的方法教程详解

    go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module 将是Go语言默认的依赖管理工具.到今天 Go1.14 版本推出之后 Go mod ...

  3. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语言. ...

  4. 一个不错的shell 脚本教程 入门级

    一个不错的shell 脚本教程 入门级 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2011-10-11 我要评论 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂 ...

  5. 初学者Git和GitHub简介(教程)

    翻译&转载:https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners 初学者Git和GitHub简介(教程) ...

  6. 终端中显示git分支名称的方法

    终端中显示git分支名称的方法   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为:亓官劼,地址为亓官劼 ...

  7. Git最详细的基础教程

    Git最详细的基础教程 Git简介 Git是什么 SVN与Git的最主要的区别 在windows上安装Git 下载安装Git 配置Git Git的基本使用 创建版本库. 版本回退 理解工作区与暂存区的 ...

  8. GIt在pyCharm的使用教程

    GIt在pyCharm的使用教程 目录 GIt在pyCharm的使用教程 (一)Git的安装和配置 (二)在pycharm中配置git (三)创建仓库 (四)一些基础操作 (五)建立远程仓库提交代码 ...

  9. php调试工具xdebug安装配置教程,PHP 7安装调试工具Xdebug扩展的方法教程

    PHP 7安装调试工具Xdebug扩展的方法教程 前言 说到PHP代码调试,对于有经验的PHPer,通过echo.print_r.var_dump函数,或PHP开发工具zend studio.edit ...

最新文章

  1. 3、使用二进制方式搭建K8S集群
  2. sublime如何实现函数折叠
  3. 最先进数据中心都建在哪?
  4. 颜色缩减 -利用指针、迭代器、动态地址实现访问像素
  5. git 代码回滚_能提交到远程的Git回滚
  6. 【ACL2020】Reasoning with Latent Structure Refinement for Document-Level Relation Extraction
  7. mark python新手必碰到的问题---encode与decode,中文乱码[转]
  8. netcore 实现一个简单的Grpc 服务端和客户端
  9. 高性能ORM 框架之 MySqlSugar
  10. java计算立方体体积(利用类函数)
  11. 天勤数据结构代码——排序
  12. CAJ VIEWER 7.2 已停止工作(正确的处理方法,最快最正确的方法,网上的其他方法也就是看看,很难找到问题的正确办法)
  13. ASCII码对照表(emoji表情符号)
  14. 扇贝单词里有计算机英语吗,扇贝单词英语版
  15. 如何在Excel里输入可以打钩的选择框?
  16. (1-2层) 物理层下面的传输媒体
  17. 基于Docker从零搭建Prometheus监控报警系统
  18. tomcat加白名单_[WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
  19. 快递停发区域查询(需指定快递公司) 接口说明
  20. C语言调用 free 函数释放内存后指针指向及内存中的值是否改变的问题

热门文章

  1. mysql和oracle复杂查询语句_oracle表复杂查询
  2. 均匀分布 卡方分布_【Math】概率论常用分布大全
  3. android dslr控制软件,dslr camera安卓版
  4. python写对象提供的方法_下面哪些是python读对象提供的“写”方法?
  5. Linux ps命令和pstree命令
  6. c语言tab什么意思_我的C语言入门笔记~!
  7. 内存屏障(Memory Barrier)(二)什么是读屏障?
  8. 原来华为的鸿蒙就是换皮安卓,OPPO公关抖出鸿蒙是安卓换皮的猛料,结果被骂到辞职...
  9. 移动代理服务器 Mobile Agent Server(MAS)
  10. 自动化立体仓库可以为企业带来什么效益?