关于git

day01 git

1.课程简介

 服务端开发

  • 学习路线

    • ==git==

    • ==ECMAScript6.0==

    • ==nodejs==

    • Express

    • mysql

    • ==ajax+promise== 项目

    • websocket:双向数据通信

    • webpack:打包

2.git介绍

2.1 git能做什么

  • 作用:团队开发中使用,不是写代码的软件,是一个管理代码的工具

  • 好处:优雅,快速,高效管理版本代码

2.2 主要作用(代码管理工具,管理代码版本)

  • 版本的概念

    (1)初指一种书籍经过多次传抄、刻印或以其他方式而形成的各种不同本子。随着时代的发展,版本也开始应用于影视、软件等事物上,形容事物相同但介绍方法等不同的两个事物。

    (2)软件版本编号制定是指为软件设置版本号码的方式。通常,版本号码会以数字订定。

    (3)软件名称后面经常有一些英文和数字,如:CTS3.3.5、QQ 2021 Beta,这些都是软件的版本标志,通过它,我们可以对软件的类型有所了解。

    各版本的时间轴演变,每一次版本的改变,都会有功能的改变关于git_第1张图片 

    关于git_第2张图片

  • 版本管理

    • 早期管理方式关于git_第3张图片

      关于git_第4张图片

      问题:传统管理方式造成了本地电脑上有很多相同的文件,不容易维护,造成了非常混乱的局面。

    • 版本控制软件

      • 常见的版本控制软件:git svn

      • 好处:使用版本控制以后,只需在本地保存一份,各个版本由版本控制软件来进行管理关于git_第5张图片

3.git的简介

3.1 git定义

Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。

3.2 git特点

  • 管理版本代码

  • 项目越大,越复杂,git优势越明显

3.3 git三个区域

  • 工作区

写代码关于git_第6张图片

  • 暂存区

某一个功能完成了,就可以存储在暂存区关于git_第7张图片

  • 仓库区关于git_第8张图片

下班,页面完成了,功能完成了,代码提交到仓库

4.git的使用

4.1 下载安装

  • 下载网址

    • Git :官网,国外,速度很慢

    • NPM, Node.js, Node.js RC, Node.js Nightly, io.js, alinode, nsolid, Python, PhantomJS, electron, electron-builder-binaries, atom-shell, node-chakracore, nodejieba, git-for-windows, nwjs, atom, ChromeDriver, OperaDriver, geckodriver, selenium, node-inspector, fsevents, node-sass, leveldown, leveldown-hyper, mknod, rabin, sodium-prebuilt, utp-native, node-tk5, couchbase, fuse-bindings, zmq-prebuilt, gl, hackrf, sqlite3, sqlcipher, chromium-browser-snapshots, grpc, nodegit, canvas-prebuilt, cypress, flow, robotjs, poi, libjpeg-turbo, moby, yarn, utf-8-validate, jpegtran-bin, pngquant-bin, zopflipng-bin, gifsicle-bin, mozjpeg-bin, cwebp-bin, optipng-bin, jpegoptim-bin, pngcrush-bin, guetzli-bin, gif2webp-bin, pngout-bin, adg-bin, jpeg-recompress-bin, zeromq, minikube, sentry-cli, sharp-libvips, sharp, looksgood-s2, tfjs-models, tensorflow, tf-builds, node-canvas-prebuilt, canvas, node-swc, xprofiler, prisma, argon2 Mirrors:淘宝镜像

  • 安装

    • 双击软件-->一直下一步(不要有中文)

    • 检查是否安装成功

      • 在任意位置右击出现下图

      • 关于git_第9张图片

  • 配置用户信息(下载好以后配置一次即可,识别用户,全局)

    • 右击-- Git Bash Here

    • 命令

      git config --global user.name 用户名
      git config --global user.email 用户邮箱
      ​
      例子:
      git config --global user.name ujiuye
      git config --global user.email [email protected]
    • 查看是否配置用户信息成功

      (命令查询): git config --list  
      (文件夹中查看): c -- > 用户 --- > ibm(电脑名称)---  有一个.gitconfig文件

4.2 步骤

  • 初始化项目

    • 创建项目根文件夹(初始化一次就可以)

    • 当前项目文件中右击 -- Git Bash Here

    • 命令:git init ---- >在当前文件夹中生成一个.git的文件

    • 注意:显示隐藏文件关于git_第10张图片

  • 编写代码(工作区,新建一个html文件)

  • 把工作区的内容添加到暂存区

    • 命令:git add 文件名

  • 把暂存区的内容添加到仓库区(提交)

    • 命令:git commit -m 提交说明

4.3 git 命令

  • init : 初始化

    git init 
  • add :把文件存储到暂存区

    git add 文件名
    git add .    : .代表文件夹下所有的文件和文件夹
  • commit :将暂存区数据提交到仓库,并且生成一个版本号

    git commit -m 提交说明
  • status:查看仓库中文件的状态(了解)

    git status
  • log : 打印版本信息

    git log : 以完整的形式输出
    git log --oneline : 以简短的形式输出
  • reset:版本回退(改需求,新版本有问题)

    git reset --hard 版本号(回退到的版本号)
  • reflog:显示所有的版本信息

    git reflog : 以完整的形式输出
    git reflog --oneline : 以简短的形式输出

4.4 文件忽略

  • 对于不需要进行版本管理的文件,可以使用文件忽略(一些公共库代码,node_modules)

  • 文件忽略步骤

    • 创建一个配置文件.gitignore(需要和.git同级)

    • 在文件中配置忽略信息

      • /js/ : 忽略整个文件夹

      • *.txt:忽略所有.txt文件

      • /js/a.txt :忽略某个具体的文件

4.5 分支

4.5.1 分支介绍

  • 介绍:

    git版本控制系统支持分支操作。使用分支意味着可以从开发主线上分离开来,然后在不影响主线的同时继续工作。默认只有一个分支为master主分支。

  • 什么是主分支?

    在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个master 分支叫做主分支

  • 主分支的问题:

    在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验和效率,建议每个开发者都基于分支进行项目功能的开发

  • 分支解决的问题:

    用来保存和记录整个项目已完成的功能代码。但是不允许程序员直接在master 分支上修改代码,这样做的风险太高,容易导致整个项目崩溃关于git_第11张图片

    协议上规定:不应该在master主分支上维护代码 。应该在主分支的基础上,创建分支然后维护代码

  • 补充说明:

    在分支上的提交操作和主分支的提交操作命令一样。

4.5.2 分支相关命令

  • branch:查看当前git管理的项目中有哪些分支

    git branch

    注意:一定要初始化项目,提交一次以后就可以看到主分支

  • branch:创建分支

    git branch 分支名
    git branch deva               dev---开发软件
  • checkout:切换分支

    git checkout 分支名

    切换到对应的分支上进行开发维护,第一次从主分支master切换到某一个分支的时候,会将主分支的提交记录复制到对应的分支上

  • merge:合并分支

    git merge 分支名

    注意:一般在主分支上进行合并关于git_第12张图片

4.5.3 冲突解决

  • 什么时候会冲突:

    两个不同的分支,对同一个文件进行不同的修改,git合并的是好,无法判断合并

  • 手动解决

    • 两份都要,<

    • 只要一份,衡量删那份

    • 在master上再提交一次

5.远程仓库

  • 介绍

    Git 命令都是在本地执行,如果想通过 Git 分享你的代码或者与其他开发人员合作。 就需要将文件放到一台其他开发人员能够连接的服务器上。这就是远程仓库的作用。

    目的:把本地的仓库文件上传到远程仓库。

  • 远程仓库分类:

    • github:github是一个基于git的代码托管平台,在国外,速度比较慢,在大陆的使用很受影响

    • gitee:github是一个基于git的代码托管平台,在国内较多(码云)

    • 公司自己部署:了解即可,不是前端人员部署的,使用步骤和命令都一样

5.1 操作流程

  • 注册账号

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

    • 填写注册信息关于git_第13张图片

  • 创建仓库关于git_第14张图片关于git_第15张图片

5.2 git 命令

  • clone :克隆(用一次,项目第一次下载的时候使用)

    git clone 远程仓库地址
  • pull:拉取(下载远程仓库中的更新文件)

    git pull 远程仓库地址
  • push:提交(将本地文件提交到远程仓库)

    git push 远程仓库地址 master
    git push 别名 master
    git push -u 别名 master
    git push
  • remote : 起别名 (给远程仓库地址起别名)

    git remote add 别名 远程仓库地址
  • remote -v : 查看本地仓库别名是否跟远程仓库进行关联

    git remote -v
    

5.3 新员工进公司操作流程

  • 下载git,配置全局用户信息 (可能不需要)

  • 下载公司项目代码(git clone)

  • 写代码,改代码(add commit)

  • 将代码提交到远程仓库

  • 早上--pull 下班:push

6.ssh访问

  • 简介:传统方式访问远程仓库的问题:传统方式本地和远程传输,需重复输入gitee的账号和密码,较为繁琐。

  • SSH好处:免登录身份认证、数据加密传输。而SSH实现本地仓库和gitee之间免登录的加密数据传输。更重要的原因是团队协同开发更加方便。

  • SSH组成: (1)id_rsa 私钥文件,存放于开发者的电脑中 (2)id_rsa.pub 公钥文件 。

  • 生成密钥步骤:1、打开Git Bash 2、执行相关命令 3、连续敲击3 次回车

相关命令

ssh-keygen

ssh-keygen -t rsa -b 4096 -C "[email protected]"

ssh-keygen -t rsa -b 4096 -C "[email protected]"
  • 查看生成的密钥关于git_第16张图片

  • 将公钥添加到远程仓库中关于git_第17张图片

7.git和svn的区别

SVN:SVN是一个开放源代码的集中式版本控制系统,用于多个人共同开发同一个项目,实现共享资源。集中式版本控制系统:版本库是集中存放在中央服务器,开发者需要先从中央服务器获取最新的版本文件,然后开始干活,最后再把自己修改的文件推送到中央服务器。关于git_第18张图片

Git:Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。分布式版本控制系统:没有“中央服务器”,每个人的电脑上都是一个完整的版本库,联网开发不是必须的。但两两开发者之间肯定不会以qq或U盘形式传送,也有一台充当“中央服务器”的电脑(gitee和github)。此服务器的作用仅是用来方便“交换”各开发之间的修改。关于git_第19张图片

你可能感兴趣的:(git)