版本管理系统简介

项目的版本

  • 版本和我们平常说的软件、游戏等的版本是一个意思,比如 1.2.8 版本、比如 第1版,比如webstorm2020。

  • 所以,版本指的就是代码编写进度当中的一些节点。

  • 比如一个项目:

    • 搭建好目录结构 --- 第1版本

    • 完成登录页面布局 --- 第2版本

    • 完成登录功能 --- 第3版本

    • 完成分类页面布局 --- 第4版本

    • ...........

管理版本

  • 【记录】记录代码开发的过程,每一次代码的变化。

  • 【回退】将代码回退到之前的版本

  • 【查看】查看所有的版本

  • 【协作】配合远程仓库,实现多人协作

使用版本管理软件的必要性

工作场景一:项目的需求不断的变化,改来改去,也可能需要改回原来的代码。

  • 使用版本管理软件

    • 可以对代码每次的改动做记录,记录一次,叫做形成一个版本。

    • 可以轻松的将代码回退到任意一个版本。(可以使用之前版本中的代码、文件)

    • 电脑关机了,版本也不会丢失。

工作场景二:多个合作开发,代码不好合并。

  • 使用版本管理软件 + 远程仓库,可以解决多人合作的问题。

版本管理软件的作用

  • 记录代码的版本,可以随时回退。

  • 配合远程仓库,实现多人协作,可以很轻松的合并代码

版本管理软件分类

  • 集中式,典型代表 SVN

  • 分布式,典型代表 Git ---- 我们选择讲解Git。

Git软件安装

  • 双击,然后一直下一步安装即可(不要修改安装路径,容易出现乱码)。

  • 不要安装到含有中文的路径中。比如,不要安装到 “D:/软件/学习/Git”

  • 安装完毕,绝对不可以剪切(移动)到其他文件夹。

  • 比如安装到 D:/aa/bb/cc 文件夹,千万不要重命名路径中的任何一个文件夹

  • 安装完毕,鼠标在任何文件夹空白位置右键,如果出现 Git Bash Here,则表示安装成功。(或者点击“Git Bash Here” --> 输入 git --version 回车,如果看到版本号,则表示安装成功)

  • Mac用户,使用自带的终端。输入“git --version”,回车,如果看到版本号,则表示安装成功

Mac用户需要额外配置一下:访达 -> 服务 -> 服务偏好设置 -> 勾选“新建位于文件夹位置的终端窗口”

配置参数

Git软件在工作的时候,需要知道你是谁?所以需要设置一个用户名和邮箱。

这个用户名和邮箱,最好使用你的github账号或码云账号(如果你有账号的话),当然随便填也可以。

具体做法:

  1. 任何文件夹,空白处,右键 --> Git Bash Here

  2. 依次执行下面两行命令

git config --global user.name "xxx"
git config --global user.email "xxx"

配置之后,可以通过下面的命令来检查是否配置成功了

# 查看所有的全局配置项
git config --list --global# 查看单个的配置项,比如查看用户名
git config user.name

初体验

使用Git记录代码的每一次变更

  • 创建一个项目文件夹,随便创建一个即可。

  • 在项目文件夹里面的空白处,右键 --> Git Bash Here,打开黑窗口。

    • 在黑窗口中,输入 git init 然后按回车,表示执行这条命令。

    • 这一步是Git初始化。初始化之后,表示Git软件可以管理这个项目了

    • 对于一个项目来说,初始化工作只需要做一次。

  • 写代码测试

    • 随便写点代码

    • 执行命令 git add .

    • 执行命令 git commit -m '提交说明'

    • 执行完这两个命令,表示使用Git把当前代码及文件的改动记录起来了

  • 重复这个过程,多使用Git记录几次

初始化仓库

目的是学习,所以,随便创建一个项目文件夹,打开项目文件夹

注意:一定要在项目文件夹,右键-->Git Bash Here。

至于项目中有没有文件无所谓。

执行下面的命令:

# 初始化,表示使用Git管理我们的项目。这个命令只需要执行一次(注意空格)
git init

执行 git init 命令之后,会在项目文件夹中生成一个隐藏的 .git 文件夹

.git 文件夹里面保存着当前项目文件的更改记录。所以这个文件夹不能删除

对于一个项目来说,git init 只需要执行一次

切记,不要项目套项目。

查看日志

查看日志的命令:

git log

三个区域

  • 工作区

    • 工作区,指的是使用Git管理后的文件,这些文件显示在磁盘上,供我们使用或修改的区域。所以,粗略的说,项目文件夹就是工作区。

  • 暂存区

    • 执行 git add .之后,文件由工作区,添加到了暂存区。 暂存区保存了下次将提交的文件列表信息。

  • 本地仓库

    • 执行 git commit -m '提交说明' 之后,代码会被提交到仓库区。仓库区是 Git 中最重要的部分,代码只有提交到仓库,才会形成一次历史记录,即才会形成一个版本。

查看文件的状态

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

已提交(nothing to commit)

表示没有什么东西可以提交了;即所有的内容都已经提交过了

有的文档也把这个状态叫做 未修改,意思是自上次提交过后,代码还没有修改过

  • 未跟踪(新增的文件)

  • 已暂存(新增的文件,添加到暂存区之后的状态)

  • 已修改(文件曾经被Git记录过了,然后在工作区对他进行了修改)

初学者,只需要区分:代码是否都被提交到仓库了,即可。

添加提交命令

添加文件到暂存区

新文件,只有添加到暂存区,才叫做被Git管理。否则和Git没什么关系,即使文件在项目文件夹。

# 添加当前目录的所有文件到暂存区,包括子目录
git add .

默认空文件夹,是不能添加,不能提交的

提交文件到仓库

提交到仓库的文件,是暂存区中的文件。

# 提交暂存区到仓库区
git commit -m [message]

分支

分支就是当前项目的一个副本(可以理解为把当前项目复制了一份,可以这样理解,但是要知道内部实现并非如此)。

初始化之后,默认是在master分支上进行操作的,master分支也叫做主分支。

实际开发中,正规的公司,都不允许直接在master分支上开发。需要创建分支,在分支上开发,最后将代码合并回master。

分支常用命令

# 查看所有本地分支
git branch# 创建新分支
git branch 分支名
# 比如,创建一个叫做login的分支
git branch login# 切换分支
git checkout 分支名
# 比如,切换到login分支
git checkout login
# 比如,切换到master分支
git checkout master# 创建并直接切换分支
git checkout -b 分支名

体验:

  • 创建并切换到dev分支上;在dev分支上,写点代码,提交一下。

  • 切换分支,查看两个分支的不同。

切换分支之前,必须把当前分支的代码全部提交到仓库。

合并分支

特点:一个分支包含另一个分支的全部提交记录。

如果需要把dev分支的代码合并到master分支

  • 切换到master

  • 执行 git merge add ,即可把add分支的代码合并到master

合并之后,add和master分支的代码就回一样了。

合并提示

  • 两个分支,比如是master和dev,特点是都有新的提交

  • 也就是说,一个分支不包括另一个分支的全部提交记录

  • 这种模式的合并,有可能会有冲突

  • 合并方法,和前面一样

    • 假设把dev的代码合并到master分支,切换到master git checkout master

    • 执行 git merge dev ,表示将dev分支的代码合并到当前(master)分支

    • 然后就会出现如下两个画面中的一种

      • 画面一:两个分支修改的代码不在同一个文件的同一行代码,出现下面的画面。

出现上述画面一,表示已经合并完成了,但是需要提交一次;

出现的框是让我们输入提交说明;

需要执行下面的操作:

  • i ,进入 “插入” 模式,就可以对画面中的文字进行修改了(直接输入也行)

  • 按 “上下左右” 键,调整光标的位置,可以删除里面的内容,写自己的提交说明

  • 上述画面中的 # Please enter..... 表示注释,可以不用理会

  • Esc 键,退出 “插入” 模式

  • 直接输入 “:wq”,退出这个画面,从而完成合并。(一定是英文的冒号)

出现上述画面二,表示正在合并中,但是遇到冲突了;

需要在代码中解决掉冲突,然后保存代码;

最后,需要提交一次;

具体做法:

  • 打开有冲突的文件

  • 去掉分割线,保存代码,表示解决了冲突

  • 保存代码,执行 git add .git commit -m '提交说明' 从而完成这个合并。

远程仓库

注册码云或github账号

码云和github都提供仓库的托管服务。

区别是码云是国内的服务器,打开速度较快;github是国外的服务器,打开速度不能保证。

码云:Gitee - 基于 Git 的代码托管和研发协作平台

github:https://github.com/

自行去这两个网站注册账号,最好使用相同的邮箱 分别到码云和github上注册账号。

如果你不会在Github上注册,没关系,上课的时候,老师演示。

配置码云或github的SSH秘钥

我们向码云或github网站推送代码的时候,最好使用SSH的方案,这个方案需要提前配置好秘钥。下面是具体的配置方法。

任何文件夹位置,空白处右键,选择右键菜单中的 “Git Bash Here”,执行下面的命令,可以生成SSH秘钥(包含一个公钥一个私钥)

ssh-keygen -t rsa -C "你的邮箱地址"
# 比如
ssh-keygen -t rsa -C "tangfengpo@163.com"
# 执行完这个命令之后,后面有一些询问,我们直接一路回车即可

注意,回车执行命令,然后继续回车,回车....直至生成完毕~

最后生成的秘钥在:

Windows:
C:\Users\用户名\.sshmac:
你的用户名那个文件夹中。 按shift+Commend+.  可以显示隐藏文件,然后就可以看到 .ssh文件夹了

找到 .ssh/id_rsa.pub,用vscode打开,复制里面全部的内容,配置到远程仓库,做法如下:

  • GitHub右上角的三角号

  • Settings

  • 左侧有 SSH and GPG keys

  • 在显示的界面中,点击右上角的 New SSH key,然后完成添加公钥操作

  • 码云的配置方式和Github一样。

创建远程仓库

  • 码云

    • 右上角的 “+” ,选择新建仓库

    • 填写仓库名,选择公开

    • 点击创建按钮,创建。

  • github

    • 右上角的 “+” ,选择 “New repository”

    • 填写仓库名称

    • 点击创建按钮,创建。

推送代码到远程【首次】

  • 进入本地项目文件夹,右键 --> Git Bash Here,打开终端窗口。

  • 远程仓库地址有两个(https、ssh地址),一定要选择ssh地址。

  • 添加远程仓库地址(git remote add 远程仓库地址别名 完整的远程仓库SSH地址

  • 首次推送代码到远程仓库(git push -u origin master

只能把本地仓库的代码推送到远程仓库;不能把工作区的、暂存区的代码推到远程。

确保你的本地仓库有内容,别推送空的本地仓库。注意是本地仓库,不是工作区。

首次使用SSH,会出现如下画面,输入 “yes”,回车即可。后面就不会再有了。

.

再次及后续推送

  • 工作区编写代码

  • 执行 add 命令,将代码添加到暂存区

  • 执行 commit 命令,将代码提交到本地仓库。(因为只有本地仓库的代码才能推送到远程)

  • 执行 git push 命令,将这次改动推送到远程仓库。

常见问题

  • 执行完“git remote add origin ssh地址”报错:fatal:remote origin already exists.

    • 叫做 origin 的远程地址以及存在了。不能再使用这个名字了。

    • 执行 git remote -v 查看所有的远程地址。

    • 可以选择性的 删除 远程地址。执行 git remote remove 别名,比如 git remote remove origin

  • 首次推送的时候,提示输入账号密码

    • 因为添加远程地址的时候,填错了,填成了 https 地址了。应该换成 ssh 地址。

    • 可以选择改过来,也可以使用https地址。下次做项目,再使用ssh地址也可以。

git remote add 那里,地址复制错了,能改吗?

# 查看所有可用的源(可用的远程地址)
git remote -v
# 删除一个源
git remote remove 远程仓库地址别名
# 然后重新添加新的地址
git remote add 远程仓库地址别名 SSH地址

我电脑上有两个本地项目(仓库),能推送到一个远程仓库吗?

没人这么干!!!!!!!!两个项目放一起,会出现混乱或者覆盖的呀!!!

推送总是不成功?

  1. 检查一下SSH秘钥配置好了吗

  2. 看看什么错误,直接把前因后果告诉老师吧~~~

  3. 实在不行,重新创建一个仓库试试,从头再来

多人协作

管理员角色

  • 创建远程仓库 或 创建本地仓库之后推送到远程仓库

    • 初始化一个项目,git init

    • 添加初始的代码到暂存区 git add .

    • 提交初始的代码到本地仓库 git commit -m "提交了初始的代码"

  • 推送到远程仓库

    • git remote add origin SSH地址

    • git push -u origin master

  • 邀请成员

  • 开发(add / commit / pull / push)

    • 编辑自己的代码

    • 把修改后的代码,添加到暂存区 git add .

    • 把修改后的代码,推送到本地仓库 git commit -m "xxx"

    • 如果有人在你之前推送了,则推送之前需要先拉取,将拉取下来的代码和你的代码合并 git pull origin master

    • 合并如果有冲突,需要解决冲突,别忘记提交一次

    • 最后推送 git push origin master

成员角色

  • 同意邀请

  • 克隆项目到本地(注意路径)

    • 执行 git clone SSH地址 ,将项目克隆到本地。然后关闭黑窗口。

    • 进入项目文件夹,重新 git Bash Here 打开黑窗口,这样可以保证路径正确。

  • 开发(add / commit / pull / push)

    • 编辑自己的代码

    • 把修改后的代码,添加到暂存区 git add .

    • 把修改后的代码,推送到本地仓库 git commit -m "xxx"

    • 如果有人在你之前推送了,则推送之前需要先拉取,将拉取下来的代码和你的代码合并 git pull origin master

    • 合并如果有冲突,需要解决冲突,别忘记提交一次

    • 最后推送 git push origin master

分支和远程相关命令

查看远程分支

git remote show 仓库别名# 比如,查看一个叫做码云的远程仓库的分支
git remote show origin

跟踪分支

跟踪分支就是把远程仓库的分支下载到本地

git checkout 远程分支名# 比如有个远程分支,叫做user,把他下载到本地也叫做user
git checkout user

Git忽略

在项目中,创建 .gitignore 文件,它就是git的忽略文件,记录了哪些文件不被Git管理。

如果有的文件已经被Git管理了,而又想设置为忽略文件,则需要使用 git rm --cached 文件 将文件从仓库中移除才有效。

被成功忽略的文件,不会被添加到暂存区,不会被提交到本地仓库,不会被推送到远程仓库。这就是忽略的意思。

# 展示 .gitignore 的写法# 忽略当前目录中的 test 文件夹
/test# 忽略任何目录中的 test 文件夹
test/# 忽略任何目录中的 png 图片
/**/*.png

总结

  • 能够掌握 Git 中基本命令的使用

    • git init

    • git add .

    • git commit –m "提交消息"

    • git statusgit status -s

  • 能够掌握 Git 分支的基本使用

    • git branch 查看分支

    • git checkout 分支名称

    • git checkout -b 新分支名称

    • git merge 分支

    • git push -u origin 新分支名称

  • 能够配置 SSH 访问

Git 版本管理系统简介和远程仓库相关推荐

  1. git回退到某个版本并提交到远程仓库

    git回退到某个版本并提交到远程仓库 1. 前言 有些时候我们提交的远程代码(最新的代码)也许还不如上次写的好,于是我们就想回退到以前的版本.那么怎么回退呢 对了,回退之前还是先备份下.. 2. 版本 ...

  2. Android基础新手教程——1.5.2 Git之使用GitHub搭建远程仓库

    Android基础新手教程--1.5.2 Git之使用GitHub搭建远程仓库 标签(空格分隔): Android基础新手教程 本节引言: 在上一节中.我们学习了怎样使用Git.构建我们的本地仓库.轻 ...

  3. 初谈Git(本机克隆项目远程仓库)

    1. 码云注册与新建项目 注册并新建项目 2. Git安装并配置 安装 配置 3. clone项目 附:一些Git命令 git clone 拷贝并跟踪远程的master分支 git add 跟踪新文件 ...

  4. Git笔记(8) 远程仓库的使用

    Git笔记(8) 远程仓库的使用 1. 远程仓库 2. 查看 2.1. 简写 2.2. URL 2.3. 协作 2.4. 详情 3. 添加 4. 抓取 5. 拉取 6. 推送 7. 重命名 8. 移除 ...

  5. Android Studio(13)--- Git之使用GitHub搭建远程仓库

    Git之使用GitHub搭建远程仓库 在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等:读者肯定不满足与本地是吧,假如是多个人一起来开发一个程 ...

  6. Android 应用开发(30)---Git之使用GitHub搭建远程仓库

    Git之使用GitHub搭建远程仓库 本节引言: 在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等:读者肯定不满足与本地是吧,假如是多个人一起 ...

  7. Git学习(二)远程仓库建立与克隆

    Git远程仓库建立与克隆 十五.在github上创建自己的远程git仓库 1.创建github账户 2.创建SSH Key 创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这 ...

  8. git第一次提交代码至远程仓库

    一 首次提交代码到git仓库 第一步:git init 初始化项目文件夹 第二步:git add . 键所有文件添加到暂存区 第三步:git commit -m "first commit& ...

  9. 08 Git中本地工作与远程仓库的同步

    本节视频: 本节的目标对应日常工作的常态,将应对第一次提交中不会遇到的各种"意外".这些意外是多人合作中的正常现象,需要掌握其正确的处理方式. 与上一节相比,本节的新内容是从远程仓 ...

最新文章

  1. mac搭建python开发环境_Mac中基于Homebrew搭建python开发环境
  2. python3.6.5安装教程-Ubuntu16.04安装python3.6.5步骤详解
  3. lnmp的编译安装mysql_LNMP环境搭建(二) 编译安装MySQL
  4. 动态内存分配导致内存泄漏之处
  5. python打包成安装包_把 python 程序打包成 egg 或者 whl 安装包
  6. 分享一个关于生鲜电商的竞品分析报告
  7. 神舟笔记本触摸板驱动_关闭笔记本触摸板的四种方法
  8. js xmlhttp ajax 超时时间,如何为XMLHttpRequest设置超时和ontimeout?
  9. 为什么选择react?为前端开发选择React的六大理由
  10. vim编辑器的快捷键使用
  11. Atitit 项目管理(5)----------后勤管理与工具链支持管理
  12. “一天搞懂深度学习”笔记
  13. 对抗训练fgm、fgsm和pgd原理和源码分析
  14. 高校学生社团管理系统
  15. Vue2-Vue3.0学习笔记(2021年黑马程序员最新视频)
  16. contiki学习笔记(六)contiki程序加载器和多线程库
  17. 如何用C语言画立体几何图形,立体几何图形公式大全
  18. html转pdf之使用Paged.js加页眉页脚
  19. ORCLE替换内容中的回车、换行、制表符(tab)
  20. river歌曲表达的意思_River是什么意思

热门文章

  1. jQuery 实现显示与隐藏效果
  2. 三国志战略版:大丹开荒故事会_关妹张苞开荒_上篇
  3. iconfont字体图标,ico图标设置,版心
  4. 高通平台LCD驱动分析
  5. 基于 python的猫、狗、鼠、兔宠物识别系统
  6. 小米官网原生js如何写账号登录和扫码登陆的切换
  7. linux下通过mount挂载iscsi、ntfs、nfs详解
  8. python 中os.path 的一些路径常用函数
  9. 重磅!不止是芯片!半导体全产业链分析
  10. 计算机网络非常不好什么原因是什么情况,网络不稳定 教您网络不稳定是什么原因 - 云骑士一键重装系统...