Git 学习

一,快速入门

1.1 什么是 Git

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

1.2 什么是版本控制?

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

1.3 版本控制工具

1.3.1 集中式

在这里插入图片描述

  • 集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
  • 多年以来,这已成为版本控制系统的标准做法。这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。
  • 事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

1.3.2 分布式

在这里插入图片描述

  • 客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
  • 分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的),每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

1.4 工作机制

  • 工作区:放在磁盘区的代码
  • 暂存区:通过工作区git add放在此处
  • 本地库:通过暂存区的git commit放到此处
  • 远程库:通过本地库上传到远程库,代码托管中心是基于网络服务器的远程代码仓库
    在这里插入图片描述

二,场景示例

2.1 初次在本地进行版本控制

  1. 进入要管理的文件夹
  2. 初始化,即提名做老大,拥有对该文件夹下所有文件的管理权限,会生成 .git 文件,所有的配置和版本文件都存放在这里
  3. 管理
  4. 生成版本

涉及命令:

初始化本地库
git init    

将文件从工作区添加到暂存区
git add 文件名   添加单个文件
git add .      添加全部

个人信息配置:用户名和邮箱,用于告诉Git,是谁生成的版本;这个配置只在第一次安装Git时进行,对所有文件夹都生效
git config --global user.name 用户名
git config --global user.email 邮箱

提交到本地库,生成版本
git commit -m "日志信息" 

查看本地库状态
git status      详细信息
git status -s   简短信息

查看版本记录
git reflog    查看版本信息
git log       查看版本详细信息

在这里插入图片描述

工作区和版本库的作用比较容易理解,暂存区的设置是为了在两个区域中进行缓冲,以便决定文件的后续去向。

2.2 开发新功能

开发新功能完成后,在Git上进入该项目目录,执行下列命令即可:

git add .      添加全部
git commit -m "日志信息" 

2.3 出现意外,需要版本回滚

查看版本记录:

在这里插入图片描述
回滚至之前版本:
git log

git reset --hard 版本号

回滚至之后版本:

git reflog
git reset --hard 版本号

在这里插入图片描述

2.4 分支

Git中,生成了多个版本时,后面的版本只会保存有修改的部分,没有变化的部分会做一个类似快照的操作

设想一个场景:在原来的旧版本上开发新功能,新功能开发到一半,结果原来的旧版本出现了bug,这时如何处理?解决办法

分支可以给使用者提供多个环境的可能,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

在这里插入图片描述
命令总结:

git branch      查看分支
git branch 分支名称     创建分支
git checkout 分支名称   切换分支

合并分支(可能有冲突,此时需要手动处理冲突的代码,然后按修改文件后的操作提交至版本库即可)
git merge 要合并的分支   先切换分支,再合并

git branch -d 分支名称    删除分支

2.5 代码托管仓库 GitHub

如何把本地仓库推送到线上?
当本地没有仓库时,需要新建一个仓库,并获取控制权git init,然后执行下列命令,即可将本地仓库推送至远程:

git remote add origin https://gitee.com/xxx/xx.git  为远程链接起别名为origin
git push [-u] origin master  将本地仓库的master分支推送至origin仓库的master分支,默认是master分支,如果有其他分支,也可以推上去

如何把线上仓库拉取到本地?

git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址,origin是默认的别名)
默认会克隆所有分支,但git  status时只会显示出master分支,需要就行分支切换才可以看见git checkout 分支名称

疑问:
后续需要推送代码到线上仓库时,一种做法是先拷贝,然后修改后直接推送;还有一种做法是先将远程仓库的代码拉取到项目中,然后直接推送项目,这会有一个问题,将远程拉取到本地时会不会覆盖本地的修改,直接把新添加的文件删除了?

笔记还未完成。。。start->

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值