带你深入了解git

1、Git介绍

1.1git是什么工具

git是一个版本工具
版本如何理解呢?
如v1.0.0==>v1.0.1==>v1.0.2,版本就是一个更新迭代的变化。
举个例子:如果v1.0.2版本有严重的bug,而v1.0.1没有,你可以轻松的下载之前没有bug的版本。
这就是版本的控制。

1.2git起到的作用

比如你在公司里开发一个项目,只有你一个前端或者多个前端。

1.2.1 个人开发:

打个比方你开发一个项目要30天,你每天下班前都将代码保存到本地,第一天、第二天、第三天、第四天、第五天…突然有一天你的电脑坏了,里面的文件全被删除,并且不可逆转,那你之前所写的代码所花费的时间是不是都浪费了?
当然可能会有人说,我每天将数据存到一个u盘或者硬盘里不也可以,这其实也行,但是如果你哪天去上班忘了带u盘或者硬盘,那么你该如何进行项目推进?这也是一个问题。

1.2.2 多人开发:

一个项目可以需要多个前端进行开发,这个哥们负责哪几个页面,那个哥们负责哪几个页面,你负责几个页面,每天当要下班了是不是要对代码就行汇总,那么怎么汇总呢?难道是这个哥们和那个哥们把代码拷贝过来,然后和你写的代码一起保存?
这汇总可能会出现错误,比如命名错误,文件夹名称相同,会出现覆盖等等情况。

为了解决这些问题,我们就需要用到git版本控制工具。

一般我们在做项目的时候,第一步都会现在远程服务器创建一个仓库,比如GitHub、码云…。
每天下班前将代码上传到仓库里,就算你换了电脑,去远方出差,我们可以直接从仓库中拉取克隆到本地,无需在用u盘那样麻烦。
在多人开发,如果发生错误等等,我们可以直接回退到之前的版本。

总的来说:git在项目中起到的作用就是:代码管理、上传、下载、版本回退等等…

可以去官网看看git和其他版本控制的区别:https://www.git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F

2、Git安装与下载项目代码

2.1 下载安装git

官网:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
里面有详细下载教程,我就不多说了。

在安装完后,我们在桌面右键:会多出git GUI Here和Git Bash Here
说明一下我是window操作系统。

在这里插入图片描述
还可以在终端测试是否安装成功:
在这里插入图片描述

2.2 从仓库下载代码

国内:码云
网址:https://gitee.com/chinaio
国外:GitHub
网址:https://github.com/

以码云为例:
我们在码云找到一个项目
在这里插入图片描述
右侧有一个克隆/下载
我们复制该链接或下载ZIP。
以复制链接为例:
新建一个文件夹,右键,点击Git Bash Here:
在这里插入图片描述
进入命令行:输入git clone ,然后右键Paste粘贴刚才在码云复制的链接
在这里插入图片描述
回车,开始下载
在这里插入图片描述
在这里插入图片描述
下载完毕。

3、创建仓库及提交代码

3.1 创建仓库

以码云为例:
1、访问到码云平台:https://gitee.com/chinaio

2、注册==》登录账号
3、登录后==》新建仓库
在这里插入图片描述
新建仓库:
在这里插入图片描述
设置一些仓库信息(勾选了初始化仓库):
在这里插入图片描述
建立成功:
在这里插入图片描述
不勾选初始化仓库,建立后是这样的:
在这里插入图片描述
官方建议在建立仓库时进行初始化。

3.2 将本地代码以及文件提交到远程仓库

3.2.1git全局配置

第一次必须配置全局变量,本地git和你的账户密码进行关联。

git config --global user.name "东方青云"
git config --global user.email "2114683298@qq.com"

user.name是你注册账号时的用户名
user,email是你注册账号时的邮箱

3.2.2 远程仓库和本地机器的连接

如果你使用SSH一定要配置ssh公钥,如果是HTTPS则不用。
如果你有很多账户,那么git该提交到哪个账户呢?
SSH公钥的主要作用就是你本地仓库和远程服务器上登录的账户进行一个连接
在这里插入图片描述

设置:
在这里插入图片描述
找到ssh公钥:
在这里插入图片描述

点击怎样生成公钥:
地址:https://help.gitee.com/base/account/SSH%E5%85%AC%E9%92%A5%E8%AE%BE%E7%BD%AE
里面有具体步骤,我就不写详细说明了。

3.2.3 上传代码

提交所有代码到中转站

git add .

提交所有代码到本地仓库

git commit -m '注释内容'

提交本地仓库到码云

git push

4、提交多次代码如何查看之前代码

举个例子(这个荔枝可好吃了):
在我们开发项目的过程中,目前下面这个项目提交了36次,如果在第36次提交的代码中有严重的bug,我们想退回到之前的版本,用git就能够很好的解决。

在这里插入图片描述
我们点击第36次提交:
在这里插入图片描述
进入到统计页面:
在这里插入图片描述

点击你想回退版本右侧的浏览文件:

在这里插入图片描述
点击下载ZIP,不要使用克隆,克隆的是最新版本,而ZIP则是此次浏览的版本文件。

5、git入门总结

5.1 团队开发遇到什么样的问题?

  1. 备份多个版本,费时间,费空间、
  2. 难以恢复到以前的版本
  3. 难以解决代码冲突问题
  4. 难以追溯问题以及修改人和修改时间
  5. 无法进行权限控制

使用git能够很好的解决这些问题。

除了git可以进行版本控制,还要很多版本控制工具,如svn。

5.2 svn和给git的区别

svn是集中式管理,而git是分布式管理。
怎么理解集中式和分布式呢?
简单来说集中式就是如果没有网络就无法提交上传代码,而分布式则可以先暂存到本地(git add . ,git commit -m ‘暂存’),等有网了在上传到远程服务器。

可以去官网看看git和其他版本控制的具体区别:https://www.git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F

6、git详细命令

6.1 初始化仓库

git init

6.2 查看配置

git config -l

在我们进入公司做项目,必须配置user,email和user.name

6.3 查看状态

git status

在这里插入图片描述
红色的表示没有被git管理
绿色的表示存储在版本库暂缓区

6.4 添加到暂缓区

git add .
.代表所有文件
指定某个文件 git add index.js

6.5 添加到分支

git commit -m '注释内容'

6.6 查看修改文件

git diff
查看某一个文件:git diff index.js
查看所有文件: git diff

6.7 查看修改历史

git log

在这里插入图片描述
使用这个命令就能够清除的看见谁哪个时间修改了文件,
在这里插入图片描述

6.8 查看修改历史(简单形式)

git reflog

在这里插入图片描述

6.9 版本回退

可以直接在本地进行版本回退,很多版本都会在本地进行存储一份。

回到上一个版本:

git reset --hard HEAD^

回到指定版本:

git reset --hard 版本号

箭头所标即是版本号。

在这里插入图片描述

7、多人开发解决冲突问题

我来模拟一下二人开发过程:

创建两个文件夹(两个人):
在这里插入图片描述
他们二人都克隆下载代码

在这里插入图片描述
在这里插入图片描述

在进行项目开发前,各自都需要配置一下啊(局部,之前配置的global是全局的)

git config user.name '用户名'
git config user.email '邮箱'

在这里插入图片描述
在这里插入图片描述

张三新增了一个index.js文件

在这里插入图片描述
我们进行上传:
在这里插入图片描述

远程仓库已经提交成功:

在这里插入图片描述
此时我们的李四也新增了一个文件,common.js文件,然后进行提交
在这里插入图片描述
在这里插入图片描述
进行push报错,这是为什么呢?

如果远程仓库有人更新了代码,那么我们不能直接的去git push。

解决:

我们必须先把远程 仓库的代码下拉,然后再push

git pull
git push

下拉后,多了刚才张三提交的index.js文件
在这里插入图片描述
我们在git push,远程仓库已经更新。
在这里插入图片描述
新的问题:如果此时二人本地都要index.js文件,然后进行了不同层级的修改,导致代码不同,然后都提交远程仓库,会发生什么问题呢?

张三对index.js文件进行修改
在这里插入图片描述
在这里插入图片描述

此时李四对index.js文件进行修改。
在这里插入图片描述
我们提交一下,看看远程仓库是保留张三的内容还是李四的内容
在这里插入图片描述

在这里插入图片描述
代码冲突了,我们该如何解决,解决是比较繁琐的事情。
解决:

将报错乱码删除,删除后如果都想要直接提交即可,如果只想要其中某些代码,需要跟项目组进行协商,哪些代码需要保留,哪些不需要,然后在提交。

在这里插入图片描述
在这里插入图片描述

所以说写完代码尽快提交,后提交的人需要解决这些冲突问题,哈哈哈哈哈

8、分支操作

在git中,默认有一个主分支:master
一般来说在公司开发项目,每个人都有自己独属的分支,最后项目要上线了,统一将所有分支合并到主分支。

8.1 查看本地分支

git branch

在这里插入图片描述

8.2 新建分支

git branch 分支名称

在这里插入图片描述

8.3 切换分支

git checkout 分支名称

在这里插入图片描述
左边*号表示当前所在分支

8.4 查看远程仓库分支

git branch -r

在这里插入图片描述
当前我们只在本地添加了分支,而远程仓库并没有添加。

在这里插入图片描述

8.5 本地分支提交到远程仓库

不能直接git push
在这里插入图片描述
正确提交:

git push --set-upstream origin 分支名称

在这里插入图片描述

由分支数量1变成了2,说明提交成功了。
在这里插入图片描述

8.6 删除本地分支

git branch -d 分支名称

如果你当前正在使用此分支,则无法删除,就像你在电脑上打开了一个文件夹一样,当前打开的文件夹不能进行删除。

在这里插入图片描述
我们切换一下分支,然后再进行删除。

在这里插入图片描述

8.7 删除远程仓库的分支

目前只是删除的本地分支,远程仓库的分支还存在。
在这里插入图片描述

git push origin --delete 分支名称

在这里插入图片描述
在这里插入图片描述
删除成功。

9、合并分支

9.1分支是独立的,不会互相影响。

我们在主分支master添加hhhh.js文件

在这里插入图片描述
我们在创建一个新的分支dev。
在这里插入图片描述
根据上述所说,分支是独立的,不会互相影响,目前我们创立了新的分支dev,然后切换到了dev分支,可还是有hhhh.js文件,这是为什么呢?
其实分支是独立的,不会互相影响这句话并没有错,只是不够完整。

如果在一个分支下创建另外一个新的分支,新的分支会继承旧分支之前的操作。

现在我们在dev分支添加一些代码,然后切换到master主分支,看看它的代码有没有变化。

在这里插入图片描述
在这里插入图片描述
主分支代码并没有发生变化,我们改变一下主分支的代码,然后切换到dev分支,看看dev分支下的hhhh.js文件有没有发生变化。
在这里插入图片描述
在这里插入图片描述
dev分支下面的代码并没有发生变化。

9.2 合并分支

使用命令:

git merge 分支名称

merge本身的单词意思就是合并

如果当前是在master分支下写入:git merge dev ,那么master和dev会进行合并,相当于master + dev ,也就是master += dev

在这里插入图片描述

合并失败,发生冲突,如何解决多人开发冲突问题,之前已经讲过了,我们再讲一次。

代码冲突了,我们该如何解决,解决是比较繁琐的事情。
解决:

将报错乱码删除,删除后如果都想要直接提交即可,如果只想要其中某些代码,需要跟项目组进行协商,哪些代码需要保留,哪些不需要,然后在提交。

解决完代码冲突后,在提交即可。
在这里插入图片描述

10、Gitflow工作流

gitflow一般用于中大型项目,我们讲下git flow的具体使用细节。

master //用于保存上线版本代码,创建了dev分支
develop //用于保存相对稳定版本的代码,所有的feature都是dev分支创建的
feature //用于开发某几个功能,不同的功能可能会创建不同的分支
release //用于代码上线前的准备(测试,bug修复),是dev创建的
bugfix //用于修复不紧急bug
hotfix //用于修复紧急bug

我来模仿三个角色,领导、开发1(张三)、开发2(李四)

首先领导先创建好一个仓库,然后在本地拉取代码,创建好分支。
在这里插入图片描述

在这里插入图片描述
创建本地develop分支
在这里插入图片描述
将本地分支提交到远程仓库
在这里插入图片描述
假如张三开发一个login页面,李四开发一个list页面,给他们创建好对应的分支。
在这里插入图片描述
将本地分支提交到远程服务器仓库
在这里插入图片描述
在这里插入图片描述
领导已经将分支建好,张三和李四开始进行开发。

张三:
第一步:克隆代码
在这里插入图片描述
第二步:进行局部配置
在这里插入图片描述
在这里插入图片描述
第三步:切换到feature/login分支
在这里插入图片描述

张三添加login文件
在这里插入图片描述
进行提交文件
在这里插入图片描述
此时远程仓库的feature/login分支添加了login文件夹,其他分支是没有的。
在这里插入图片描述
接下来李四也要进行开发了。

第一步:克隆代码在这里插入图片描述
第二步:进行局部配置
在这里插入图片描述
在这里插入图片描述

第三步:切换分支

在这里插入图片描述
李四添加list文件夹,然后进行提交。
在这里插入图片描述

远程仓库reature/list分支已经添加上了。
在这里插入图片描述
此时develop分支是什么都没有的,最后领导对分支进行合并。
在这里插入图片描述
合并结束:

git merge origin/featur/login
git merge origin/featur/list
git add .
git commit -m '注释内容'
git push

在这里插入图片描述

在develop合并完代码后,进入测试环节,测试人员进行测试,如果有问题,则在develop分支下创建release分支。然后release分支创建bugfix分支(修复不紧急bug),hotfix(修复紧急bug),在bug修复完后进行代码提交,没有问题后在release分支对bugfix和hotfix分支进行合并,在切换到develop分支对release分支进行合并,最后没有任何bug后,在由master分支合并develop分支,然后上线。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Git是一个分布式版本控制系统,用于跟踪文件的变化并协调多人在同一个项目上的工作。\[1\]Github是一个基于Git的代码托管平台,可以用来存储、管理和分享代码。\[1\] 在使用GitGithub之前,首先需要安装GitGit可以在多个操作系统上安装,包括Windows、Mac和Linux。你可以从Git官方网站下载适合你操作系统的安装程序,并按照安装向导进行安装。\[2\] 配置Github需要进行以下步骤: 1. 创建一个Github账号,如果已经有账号可以直接登录。 2. 在Github上创建一个新的仓库,用于存储你的代码。 3. 在本地的Git仓库中,将远程仓库克隆到你的电脑上,这样你就可以在本地进行代码的修改和提交了。\[1\] Git的标准工作流程是工作区→暂存区→Git仓库,但有时候可以跳过暂存区,直接将工作区中的修改提交到Git仓库。这可以通过在提交时使用git commit命令加上-a选项来实现。这样Git会自动将所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤。\[3\] 希望这些信息能帮助你更好地理解GitGithub的基本概念和使用方法。如果你想深入学习GitGithub,我建议你参考廖雪峰老师的官方网站中的文章,那里有更详细和深入的内容。\[2\] #### 引用[.reference_title] - *1* *2* [手把手教你如何使用gitgithub](https://blog.csdn.net/m0_66614389/article/details/126617370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [GitGithub的使用](https://blog.csdn.net/DS153/article/details/123555356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方青云、

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值