git入门

数字化转型
• 阅读 1286

起步-关于版本控制

在介绍Git之前我们先了解一下什么是版本控制,在pro.Git这本书中说道:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。关于版本控制,其实可以对任何类型的文件进行版本控制。接下来我将介绍一下三种版本控制系统。

本地版本控制系统

在最早的时候,一个开发者要开发一个项目,那时人们习惯于复制整个项目目录的方式来保存不同的版本,这样的好处是简单,但是坏处也是很明显的,当复制黏贴多了以后,一个开发者自己都会混淆,更不要说让别人去了解了。

集中化的版本控制系统

这个控制系统的出现已经可以解决上面所说的那个问题了,同时还让不同系统上的开发者可以协同工作。这种方式的原理是利用一个单一的集中管理的服务器,用于保存所有文件的修订版,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。但是这样同样也会有一个问题,假如一个开发者他为公司开发项目,这就意味着,他想要提交更新代码只能在公司,如果他想在家提交代码,这是不可以的,这样的话就有极大的限制了,而且一旦服务器出现故障,那么所有的代码,就有可能就没有了,这对开发者开说是一个巨大是灾难。

分布式的版本控制系统

什么是分布式的版本控制系统呢?这里简单举一个例子,当一个项目有很多开发者去完成时,每一位开大者并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,这就意味着其实每一位开发者的本地其实都是一个服务器,这样的话即使我的代码丢失了,那我同事或者远程仓库那应该会有备份我可以去他那拷贝。接下来我们要说的git就是一种分布式的版本控制系统,至于为什么使用git而不使用其他的大家可以参考:。。。

Git简单使用

安装

git在Linux上安装

sudo apt-get install git

git在windows上安装

https://git-scm.com/downloads...,然后下一步,下一步安装就可以了。安装玩以后再自己的电脑上,

注:如果上述安装方式并不能安装,你可以去Git官网上去看看,或者百度一下,就会有很多的安装教程。

设置配置信息

一般第一次安装以后就应该去配置一下信息,安装玩git以后,在电脑桌面上右击可以看到多了一个git Bash Here和git GUI Here,一般我比较常用git Bash,类似于一个命令行。

用户信息

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
注意:上面两个是例子,请不要填写一样的user.name和user.email,还有就是在打的时候注意空格。设置完信息以后可以利用git config --list查看用户的配置信息。

开始使用Git

首先右击选择git bash利用mkdir gitDemo创建一个文件夹,然后cd ./gitDemo进入当前的文件夹,利用git init初始化项目仓库,该命令将创建一个名为 .git 的子目录,注意这是一个隐藏文件,你需要先显示出电脑上的隐藏文件才能看见。在具体上git命令之前我们先理解一下git中常见的集中状态

图片描述

Working Directory:表示的是你电脑的上写代码的地方成为工作区
Staging Area:表示的是暂存区
.git(Repository):表示的是本地的仓库,也叫历史区,
至于那几个箭头分别表示的是一些git中的操作等会我们会说。

status命令

这个命令主要用于查看当前的状态,另一个功能就是有时候可以提示你下一步的操作。等会我们会使用到git status

add命令

首先我们先再我们创建的gitDemo文件夹中创建一个index.html,然后可以随便使用什么编辑器打开写上111此时这个文件存放的位置就是在工作区中,现在我们可以使用git add index.html,让git来跟踪这些文件,也可以理解为将文件从工作区提交到暂存区。这里我们用status进行查看一下

On branch master

Initial commit

Changes to be committed:
(use "git rm --cached <file>..." to unstage)

    new file:   index.html

commit命令

在文件存放到暂存区以后我们就要将文件提交到历史区了此时我们使用的命令是git commit -m '文件的描述','文件的描述'就是指你提交的代码改了什么,或者加了什么功能等等。在使用git status进行查看

On branch master
nothing to commit, working tree clean
提示没有什么要提交的,工作区是干净的.
注意:一个文件如果在暂存区并未提交,但是此时又修改了文件,这就意味着文件有两种状态,一种在工作区,一种在暂存区这样的文件是提交不上去的需要再次使用git add <文件名>

log命令

当文件提交到呢目的仓库以后我们可以使用git log来查看提交的日志文件,注意:日志文件里面有一个commit即提交的版本号,这个以后可以用于版本回退。
例如:

commit a9ba8e706093c0ab2e5470c347e30a7a268edaf4 (HEAD -> master)
Author: YH <m17**@outlook.com>
Date: Wed Nov 8 22:19:43 2017 +0800

提交index

注:git log --oneline可以在一行查看日志

git log --graph --oneline图形化查看日志

rm 命令

如果一个文件存在暂存区了现在我们又不想提交它了,那么可以使用git rm --cached <文件名>将文件从暂存区移除。

git diff

查看工作区和暂存区的区别,例如你可以在index.html里面在加一个222,然后使用git diff,那么你就可以看见

diff --git a/index.html b/index.html
index 58c9bdf..a30a52a 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
111
+222
+222表示添加上一个222
查看工作区和当前分支仓库的区别git diff HEAD
查看暂存区和历史区的区别git diff --cached

reset版本回退

由于我们这里只有一个版本,所以我们将前面添加的222页提交到本地仓库中然后使用git log查看

commit 5161c3991d3e21777dd3ab7f2c9b853cf5397541 (HEAD -> master)
Author: YH <m17*@outlook.com>
Date: Wed Nov 8 22:38:32 2017 +0800

添加222

commit a9ba8e706093c0ab2e5470c347e30a7a268edaf4
Author: YH <m17*@outlook.com>
Date: Wed Nov 8 22:19:43 2017 +0800

提交index

现在我们不想要222了,那该怎么办呢?我们可以使用git reset --hard HEAD^表示回到上一个版本,git reset --hard <版本号>表示回到指定版本,版本号就是git log输出的commit

chekout命令

如果我们在本地写了代码又不想要了怎么办呢?我们可以使用git checkout命令指从暂存区取到代码放到工作区。到这里我们就应该理解了其实无论的工作区,暂存区,本地仓库其实都是有一份代码存放在那的,当我们在工作区误删,误改了什么代码其实并不要紧。

关于git分支的操作

其实在我们初始化项目的时候git就默认为我们创建了一个master分支了,在git中默认有一个头指针指向这个master, 当我们每次提交代码的时候该指针就会向前进行相应的移动。例如:我们前提交了两次代码我们使用git log --graph --oneline查看

  • 5161c39 (HEAD -> master) 添加222
  • a9ba8e7 提交index
    *表示当前操作的分支,

51**表示原来commit的简化
HEAD:头指针此时指向master

创建分支

git barnch <分支名称>例如我们这里再创建一个dev分支git branch dev,利用git branch可以查看当前支

dev

  • master
    切换分支
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
lucien-ma lucien-ma
4年前
Git基础命令教程
Git学习git之前,我们需要先明白一个概念,版本控制!版本控制什么是版本控制版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护你的源代码和文档统计工作量
花了19998买的学习教程!java分布式架构图
Git是什么在回忆Git是什么的话,我们先来复习这几个概念哈什么是版本控制?百度百科定义是酱紫的版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。那些年,我们的毕业论文,其实就是版本变更的真实写照...脑洞一下,版本控制就是这些论文变更的管理什么是集中化的版本控制系统?那么,集中化的版本控制系统
Python进阶者 Python进阶者
3年前
手把手教你搭建集中式版本控制系统SVN服务器
大家好,我是IT共享者,人称皮皮。一、前言我们前段日子学过了分布式版本控制系统git,相信大家都领略到了它的强大,今天我们来说说集中式版本控制系统svn,跟分布式版本控制系统不同的是,集中式版本控制系统旨在用于多个人协同开发一个项目,而且它的版本控制系统都是存放在中央服务器上的,如果你需要使用就得从中央服务器上调用,它不像git,每个用户都可以有自己的版本
Stella981 Stella981
3年前
Git 版本控制管理(一)
  Git是一个分布式版本控制工具,它的作者 LinusTorvalds 是这样给我们介绍Git —— Thestupidcontenttracker(傻瓜式的内容跟踪器)关于Git的产生背景在此不做讲解,有兴趣的可以搜索一下。先介绍一下Git的特点,主要有两大特点:版本控制:可以解决多人同时开发的代码问题,也可以解决找
Stella981 Stella981
3年前
Git使用教程
Windows系统下GIT的使用1:Git简介:1.博客园上面找到的语言:Git是一种非常流行的分布式版本控制系统,它和其他版本控制系统的主要差别在于Git只关心文件数据的整体是否发生变化,而大多数版本其他系统只关心文件内容的具体差异,这类系统(CVS,Subversion,Perforce,Bazaar等等)每次记录有哪些文件作了更新,以及
Stella981 Stella981
3年前
Git和GitHub的基本操作
GIT版本控制系统版本控制系统功能:1.记录版本历史信息(记录每一次修改的记录)2.方便团队之间相互协作开发3.远程开发......常用的版本控制系统cvs/svn:集中式分布系统git:分布式版本控制系统1.GIT工作原
Stella981 Stella981
3年前
Git基础命令篇
一、Git介绍(1)Git是一个开源(LinusTorvalds为了帮助管理Linux内核开发而开发)的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,与常用的版本控制工具CVS,SVN等不同,它采用了分布式版本库的方式,不必服务器端软件支持。(2)Git的工作区、暂存区和版本库:工作区:就
胖大海 胖大海
2年前
Git 原理
简介Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS,
Damumu Damumu
2年前
Git安装详细教程
Git是一个开源的分布式版本控制系统Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。Git与SVN区别Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。Git与SV
数字化转型
数字化转型
Lv1
上有流思人,怀旧望归客。
文章
3
粉丝
0
获赞
0