学习笔记之--Git


一、版本控制

1.1 什么是版本控制

	版本控制是一种在开发过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看历史纪录,备份以便恢复以前版本的技术

1.2 集中式版本控制

	集中式版本控制系统版本库集中在中央服务器,然而个人需要每次在中央服务器得到最新版本
	个人完成代码后需要将代码推送到中央服务器,集中式版本控制系统需要在联网状态下工作,网速会影响其工作效率

1.3 分布式版本控制

	分布式版本控制没有中央服务器,每个人的电脑都是一个完整的版本库,在本地即可查询所有的版本历史
	可以离线使用,共享代码时仅需联网push到远程仓库不受服务器损坏影响

二、配置Git

2.1 下载软件

  • 下载地址(官方):https://git-scm.com/download
  • 下载地址(阿里镜像):http://npm.taobao.org/mirrors/git-for-windows/

2.2 软件安装

  • 略过~

2.3 启动Git

  • Git Bash:Linux风格的命令行
  • Git CMD:Windows风格的命令行
  • Git GUI:Git图形界面化

2.4 Git配置

	查看配置:git config -l

在这里插入图片描述

	查看不同级别的配置文件:
			1.查看系统config:git config --system --list
			2.查看当前用户的配置:git global --config

	设置用户名及邮箱:
						git config --global user.name "woshiabao666" 
					  	git config --global user.email **********@qq.com

三、Git核心

3.1 基本概念

	Git 工作区、暂存区、版本库和远程仓库概念
  • 工作区(workspace):本地的代码
  • 暂存区(index/stage):一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
  • 本地仓库(Repository):安全存放数据的位置,工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库,HEAD指向最新放入仓库的版本,图示关系:
    在这里插入图片描述
1.图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

2.图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

3.图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

4.当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

5.当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

6.当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

7.当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。

8.当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

9.当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
  • 远程仓库(Remote):托管代码的服务器

3.2 工作流程

  1. 在工作目录中添加或修改文件
  2. 把需要进行版本管理的文件放入暂存区域
  3. 将暂存区域的文件提交到git仓库
    在这里插入图片描述

四、Git项目的搭建

4.1 Git创建仓库

	Git使用git init命令来初始化一个Git仓库,在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,
	该目录包含了资源的所有元数据,其他的项目目录保持不变。

4.1.1 使用git init

  • 使用当前目录作为Git仓库,我们只需使它初始化:(git init) 该命令执行完成后会在当前目录生成一个.git目录

  • 使用指定目录作为Git仓库:(git init workspace) 初始化后,会在 workspace目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中

  • 如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交

$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'
	以上命令将目录下以 .c 结尾及 README 文件提交到仓库中

4.1.2 使用git clone

  • 我们使用 git clone 从现有 Git 仓库中拷贝项目
git clone <***>
  • 如果我们需要克隆到指定的目录,可以使用以下命令格式
git clone <***> <directory>

4.2 Git的基本操作

  • Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull
    在这里插入图片描述

4.2.1 创建仓库的命令

命令说明
git init初始化仓库
git clone拷贝一份远程仓库

4.2.2 提交与修改

命令说明
git add添加文件到仓库
git status查看仓库当前状态,显示有变更的文件
git diff比较文件的不同,暂存区与工作区的不同
git commit提交暂存区到本地仓库
git reset回退版本
git rm删除工作区文件
git mv移动或重命名工作区文件

4.2.3 提交日志

命令说明
git log查看历史提交记录
git blame file以列表形式查看指定文件的历史修改记录

4.2.4 远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并

4.3 文件的四种状态

	版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态
  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值