Git入门与使用

一、版本控制工具

1、概念

版本控制(Revision control)是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

2、版本控制的目的

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误
  • 简单说就是用于管理多人协同开发项目的技术

3、常见的版本控制工具

  1. SVN

    SVN是Subversion的简称,是一个开放源代码的集中式的版本管理系统,采用分支管理系统,它的设计目标就是取代CVS。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

  2. Git

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

4、Git与SVN比较

  1. Git是分布式的

    这也是大家最容易想到的Git与SVN的不同之处,我们知道SVN是一个集中式的版本控制系统,它实现版本控制的原理就是将多人协作的内容保存在一个中央仓库中,客户端只能通过中央仓库来进行更新和推送资源,而Git是分布式的版本控制系统,他不需要中央服务器,也没有服务端和客户端之分,实际上每一个代码提交者的主机都作为一个服务端,每台电脑都有一个完整的代码库。文件的修改可以只通过每台电脑之间进行push就可以,但是实际操作过程中不能保证每台电脑都是开机或者可用的,所以一般还是需要一台中央服务器,这台服务器的目的只方便每台客户端交换修改信息。

  2. Git 把内容按元数据方式存储,而 SVN 是按文件

    所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  3. Git 分支和 SVN 的分支不同

    分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  4. Git 没有一个全局的版本号,而 SVN 有
    目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  5. Git 的内容完整性要优于 SVN

    Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

  6. Git存在特殊的远程提交

    对集中式版本控制系统SVN来说,所以并没有远程提交的概念,它对文件每一次增加、修改、删除操作如果提交到中央仓库都要进行commit操作,而Git有本地仓库和远程仓库的概念,每一次commit的操作其实只是提交到了本地仓库,如果提交到远程仓库需要执行git push操作。

二、Git工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。

  • 在克隆的资源上添加或修改文件。

  • 如果其他人修改了,你可以更新资源。

  • 在提交前查看修改。

  • 提交修改。

  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交

    git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)。

在这里插入图片描述

三、Git四个工作区域

Git本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)

在这里插入图片描述

  • **工作区:**工作的文件目录
  • **暂存区:**英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • **资源库:**工作区有一个隐藏目录.git,这个不算工作区,而是Git的资源库也叫版本库。
  • **远程仓库:**托管代码的服务器,也就是前面提到的用于远程数据交换的仓库。

四、分支

  1. 概念

    分支是为了将修改记录的整体流程分叉保存。分叉后的分支不受其他分支的影响,所以在同一个数据库里可以同时进行多个修改,使用分支的目的是一旦出现新的bug或者业务修改,就需要从开发主线上分离开来,然后在不影响主线的同时继续工作。

    (后面再补充)

五、Git常用命令

我们只需使它初始化,使用当前目录作为Git仓库,在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据。

git init

新建一个目录newrepo,将其初始化为Git代码库

git init newrepo

下载项目文件

#从指定仓库clone项目
git clone url
#从指定仓库clone项目到指定目录
git clone url <directory>

添加文件,将文件从工作区添加到暂存区

#添加指定文件或者目录
git add [file]/[dir]
#添加目录下的全部文件
git add .

将文件从缓存区移除

#删除暂存区或分支上的文件,工作区也将删除
git rm file
#强制删除
git rm -f file
#如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中
git rm --cached file

从暂存区添加到版本库

#从暂存区添加到版本库
git commit -m '版本更新说明'
#移除不必要的添加到暂存区的文件
git reset HEAD 文件名
#去掉上一次的提交(会直接变成add之前状态)   
git reset HEAD^ 
#去掉上一次的提交(变成add之后,commit之前状态) 
git reset --soft  HEAD^ 

从远程仓库拉取

git push

向远程仓库推送

git push

关联远程仓库

git romote url

查看文件状态

git status file
git status

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值