当前位置: 首页 > news >正文

git全部使用步骤

今天要讲的内容:项目管理和工具

Git:版本控制系统

Less:动态的css语言,提高编写CSS的效率

Gulp:项目自动构建工具,对html,css,js,image进行压缩,合并等操作。

 

一.什么是git

1.Git是什么

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

CSV,SVN。

疑问:

分布式是什么意思?

版本控制是什么东西?

 

2.为什么需要Git

所以:版本控制可以帮助我们实现两件事情

l  自动记录每次的修改,并且可以方便的切换到任一版本

l  可以完成多人协作开发

 

3.Git和GitHub有何区别

Git是一款免费开源的分布式版本控制系统 --- 工具,就是一个软件

Github是用Git做版本控制的代码托管平台 --- 平台  就是一个网站

 

 

二.快速入门

1.安装

下载的是windows下面的安装。

 

 

 

 

 

最简单的就是 全部使用 默认值。

 

 

安装完成之后,可以在任意目录,点击右键,可以看到

 

 

 

 

 

 

 

2.使用

典型流程:

 

l  初始化一个Git仓库(git init)

l  设置用户名和邮箱

l  添加文件到仓库(git add 文件名1 文件名2 )

l  提交 (git commit -m 说明文字)

l  查看版本 (git log)

l  回退 (git reset --hard HEAD^/commit_id)

 

先建一个目录,作为项目目录。

 

 

 

(1).初始化一个git仓库

 

 

 

查看刚才的目录,如下:

 

 

 

注意,这个.git目录是隐藏的文件夹,需要设置显示隐藏的内容,才可以看见。

我们不要在这目录中进行任何的操作。

 

 

(2).设置用户名和邮箱

必须要设置,否则后续的一些操作将无法完成。

 

 

 

(3).添加文件到仓库

这里的文件,就是我们的项目文件。如index.html,test.css等。

 

 

 

主要是是文本类型的文件,包括txt、html、css、js等。

Text/html

Text/CSS

Text/JavaScript

 

对应的图片,word就不是。

 

 

添加如下:

 

 

 

注意:我们在使用命令的时候,经常没有提示。如果有提示,基本都是错误。

 

Linux中的哲学:没有消息就是好消息。

 

 

(4).提交

将刚刚添加到仓库的 所有文件,提交成第一个版本。

 

Git Commit  -m 说明

 

说明不能少,如果没有写,则无法commit。

 

 

 

(5).查看版本情况

使用git log 查看版本情况

 

 

 

后续的重复3~5这三个过程。

 

 

比如,我又新建了一个base.css文件

 

 

 

 

然后使用git add base.css,添加到仓库

 

 

 

 

接下来,就可以使用git commit来提交

 

 

 

 

(6).回退

我们可以回退到任何一个版本。

git reset commit_id

 

 

 

 

比如,我又后悔了,需要回到之前的那个未来的版本,可以使用git reset commit_id

 

 

 

三. Git基本概念及原理

 

1.基本概念

 

l  工作区

l  版本库

l  暂存区

l  分支

 

当前项目目录,以.git目录作为分界线,一分为二。.git是版本库,也就是Git仓库。

.git之外所有的内容都是工作区。

 

 

 

工作区:其实就是我们的项目目录及文件。我们进行常规开发的内容。

版本库:.git目录,是Git工具用于管理版本的这个目录,千万不要动。

 

 

对于版本库,也就是.git 目录所控制的部分,又有两个非常重要东西:

l  暂存区

l  master分支

 

 

 

回顾刚才的操作,需要将一个文件添加到版本库中的某个版本,做了两步操作:

第一,使用git add

第二,使用git commit

 

实际上,在使用Git的时候,不能将文件一步添加到版本库的某一个分支。必须要分两步,

第一步,将文件从工作区添加到 版本库中的暂存区。

第二步,将暂存区中的所有内容一次性提交到版本库的当前分支。

 

所以,在刚才的操作中,使用git add,其实就是将文件,如index.html添加到 暂存区中。

然后 使用git commit 将暂存区中的所有内容 提交给 master分支。

 

 

 

打一个比方。

 

 

 

 

 

2.原理剖析

核心:理解暂存区,以及具体的执行过程。

 

当前工作区中的两个文件,都已经添加到版本库中的master分支。

此时,暂存区是空的,然后尝试使用git commit来提交,结果如下:

 

 

 

 

在工作区中新建一个test.js文件,

 

 

 

此时,test.js和版本库没有任何关联,不在版本库中的任何分支上。

如图:

 

 

 

 

如果,此时使用git commit命令尝试提交,会出现如下情况:

 

 

 

 

 

接下来,将test.js加入到 暂存区。

 

 

 

 

在示意图中,如下:

 

 

 

此时,暂存区中已经有内容了,所以可以使用git commit进行提交了。

 

 

 

一旦将暂存区中的内容commit到master中,那么暂存区就会清空。

 

 

 

 

 

 

再次进行 commit操作,不会有任何提交的。

 

 

 

 

 

四.Git基本操作

主要掌握一些几个命令

 

l  git config

l  git init

l  git add

l  git commit

l  git status

l  git reset

 

主要,这些命令都是基于单人开发的版本控制。

 

1.git config

获取或者设置git 的配置项。

 

有哪些呢?

git config --list

 

 

 

 

获取具体的某一个配置。

Git config 配置项名

如:

 

 

 

 

 

 

 

2.git init

Init是initial的简写,初始化的意思。

 

我们要使用Git,第一步就是需要初始化一个版本仓库,使用git init即可。

 

在当前项目目录下,新建一个版本库时,会自动创建一个.git的隐藏目录。

 

 

疑问:我是先建版本库,还是先建项目的目录结构呢?

好的做法,就是先建 版本库。然后再进行项目开发。

 

.git目录用git用来控制版本的,不要在这个目录中做任何操作。

开发的时候,将其隐藏即可。

 

3.git add

作用:将工作区中的 文件 添加到 暂存区中。

添加的时候,可以一次性添加多个,每一个直接使用空格隔开即可。

 

 

 

 

如果在一个文件夹下,有多个文件,如下:

 

 

可以直接是文件夹名,一次性添加,如下:

 

 

 

当然,在实际开发的时候,可能在后续的开发过程中,新增了一些文件,最好是单独添加。

 

 

4.git commit

作用:将 暂存区中的 内容,一次性添加到 mater分支。

 

使用的时候,需要注意:

一定要添加说明,有两种方式:

git commit -m 说明文字 (提倡)

l  git commit 要结合 vi编辑器

 

 

如果直接写上 git commit ,那么它会弹出vi编辑器的界面,

 

Vi编辑器的模式:

编辑模式,按i进入,

命令模式,按esc

 

 

 

在命令模式下,先输入 : 然后是命令,比如要保存并退出。w保存,q退出。

: wq 就可以保存退出。

 

 

 

 

5.git status

查看状态

 

任何时候都可以查看 版本库的状态。

 

 

6.git reset

Reset,重置。

作用,回退到指定的版本。

 

基本用法

需要指定两个东西:

l  回退到哪个版本,使用commit_id来指定,或者 HEAD^、HEAD^^、HEAD^^^、HEAD~n

l  使用哪种方式,硬回退 --hard,软回退。--soft

 

为了测试效果,使用硬回退。

 

Git reset --hard commit_id

 

查看当前版本

 

 

 

 

现在,向会退到 第二个版本。找到它的commit_id,如下:

 

65c7825f56ba6f3e8de7d075b14c42e51d884787

 

 

 

此时,就回到了第二个版本的初始状态。

 

要注意,此时第三和第四个版本的文件,虽然已经不在工作区,但是它还保存在版本库中。所以可以随时再回退。

 

比如,我需要回到第三个版本。

注意,这个是相当于回到当前版本的未来版本。使用git log 只能查看当前版本之前的所有版本。

 

如何获取所有版本的commit_id呢?

针对这个需求,需要分两种情况:

l  第一,git bash窗口没有关闭,使用前面查过的commit_id

l  第二,git bash窗口关闭。比如,昨天做的操作,今天后悔了。 使用 git reflog

 

 

如果是第一种情况,直接找

 

 012ae56a05e5e9d7ddcb2b97a62e68a9820b2abf

 

使用

 

 

 

 

 

 

 

 

 

 

 

直接使用 git reset 命令即可。

 

 

 

 

五.协同开发

 

1.多人协作原理

 

 

 

2.多人协作实现

基本流程如下:

 

l  创建一个git裸服务器 (git init -bare)

l  从裸服务器将版本库克隆至本地(git clone )

l  本地常规操作

l  推送版本至服务器 (git remote +  git push origin master)

l  从远程服务器拉取版本(git pull)

 

 

最好的方式,就是有一个服务器(linux系统下搭建的服务器)

 

先在windows上面模拟协同开发

 

(1).创建git裸服务器

选定一个目录,

 

 

 

使用git init --bare

 

创建如下:

 

 

 

repository :仓库

 

此时,我们的裸服务器已经创建完毕。

 

注意,和使用git init相比,有区别

相同点:生成的文件是相同的,除了.git目录本身。

不同点:init会生成一个.git目录,而git init --bare不会。

 

没有.git目录,也就意味着它不能在当前这个目录实现版本控制。

 

 

所谓的裸服务器,就是指这里只有版本库的内容,没有工作区。

 

所以,对于git服务器而言,所要做就是 创建好 版本库。没有其他的。

 

 

(2).从裸服务器将版本库克隆至本地

甲需要开始开发了,一开始需要将服务器上的版本库 克隆至自己的电脑。

 

git clone 地址

 

在windows下的本机上,地址直接使用 绝对目录即可。

 

 

 

 

 

进入git-server目录,发现已经有了.git目录,

 

 

 

此处,我们就不需要在本地再进行 git init的操作了。

 

此时,有一个说法:

创建一个版本库,至少有两种方式:

l  在本地使用 git init创建

l  在服务器上 clone 一个

 

对于甲而已,现在就可以 完成常规的开发。

 

 

 

现在所有的版本控制都是在本地进行的。

 

 

 

注意,如下错误:

 

 

 

 

 

 

 

对于其他程序员,完全可以同步这个操作的。

 

乙程序员来了,需要开始工作了。

 

 

 

 

有了版本库,那么乙就可以在这个目录下,进行常规开发以及本地的版本管理

 

 

 

 

.........

长时间的开发,自己本地的版本控制

........

 

(3).拉取和推送版本

 

 

甲将自己的最新的版本,推送至git服务器。

 

服务器在哪儿?

git remote

 

 

 

怎么推送呢?

git push origin master

 

 

 

此时,甲已经将其最新的版本库 推送至 git服务器。

 

 

 

此时,乙程序员,并不能够看到甲的工作内容。

实际上,其他同事,需要从git服务器上,拉取最新的内容才可以。

 

 

 

 

 

有一个网站:stackoverflow

基本上我们在开发时遇到的90%以上的,都可以在上面找到准确的答案。

 

 

http://stackoverflow.com/

 

 

 

 

 

 

 

 

 

 

 

 

在上述的几个流程中,

前面三个流程,如下:

创建一个git裸服务器 (git init --bare)

从裸服务器将版本库克隆至本地(git clone )

本地常规操作

 

是没有什么问题的。

 

其中,创建裸服务器不是由开发人员来完成。是项目负责人干的事情。它会给我们一个地址。

 

做为开发人员,需要 使用 git clone命令从 git服务器 克隆版本库到本地。

 

然后在本地进行常规的管理。

 

在开发完一个阶段之后,需要将本地的 版本库 推送到 git服务器。

 

推送的时候,要注意你的版本是最新的,还是说不说最新的。

如果是最新的,很简单,直接推送  git push origin master

如果不是最新的,需要保证你在推送之前那一刻是最新的,先从服务器拉取最新的--git pull,然后再推送 git push origin master。

 

但是,如果是第一次在拉取的时候,可能会出现,拉取失败的错误。加上--allow-unrelated-historeies即可。

 

为了确保每次推送时没有问题,一般操作就是先拉取后推送。

 

3.分支

(1).什么是分支

你可以创建一个属于自己的分支,别人看不见,还继续在原来的分支上工作,而你在自己的分支上进行开发,等开发完毕,合并即可。

 

默认情况下,git中只有一个分支 master。

 

 

 

 

Branch--分支

 

在当前分支上的版本控制,如图所示:

 

 

 

 

 

(2).分支的基本操作

l  查看当前分支 (git branch)

l  创建分支 (git branch 分支名)

l  切换分支(git checkout 分支名)

l  分支上的常规操作

l  分支的合并 (git branch master + git merge 分支名)

l  分支的删除(git branch -d 分支名)

 

 

查看当前分支

 

 

 

注意 *,表示如果有多个分支,当前是在哪个分支上

 

 

创建分支

 

 

 

 

 

切换分支

 

 

 

 

接下来,所有的git相关操作都是基于 b1 这个分支的。如

 

 

 

相当于:

 

 

 

查看b1分支的log

 

 

 

 

查看master分支的log

 

 

 

当在分支上,完成了这些操作。

可以将其合并到master上面去。

 

合并需要两步:

l  切换到主分支,git checkout master

l  在主分支上,合并其它分支,git merge 分支名

 

 

 

合并之后,相当于

 

 

 

 

最后,将分支删除掉

 

git branch -d 分支名

 

 

 

就相当于

 

 

 

 

 

六.GitHub

GitHub不是Git

Git是一个版本控制系统,是一个工具。提供了诸多的一些命令,从而完成版本的控制以及协作开发。

 

GitHub是一个网站,基于Git的,主要的作用就是代码托管。

托管有这么几层含义:

l  将自己平时写的项目保存到GitHub上。

l  可以作为Git服务器来使用。

 

 

网址:https://github.com/

 

第一件事情,就是注册账号。

 

 

 

创建版本库

 

 

 

 

现在已经有了一个版本库,

我们就可以在当前版本库中,添加文件,添加版本。

 

 

 

 

可以新建文件

 

 

 

 

 

在这个操作中,对应到Git操作,应该有哪几部?

第一,在项目目录下新建了一个文件

第二,将文件使用git add添加到暂存区

第三,使用git commit 提交到版本库的主分支。

 

 

作为git服务器来使用。

 

首先在GitHub上创建一个仓库。

 

然后,在本地使用 git Clone 将版本库 克隆到本地。

使用git clone命令即可。

 

 

 

 

然后,在本地进行常规开发,并进行常规的版本控制。

 

 

 

 

 

 

完成之后,需要将最新的版本库,推送到GitHub

 

首先要找到远程的 git服务器的名称,就是origin

 

 

 

使用push推送之

 

 

 

 

 

对于这个过程,重复操作即可。

 

当然,如果有多个用户同时进行协同开发,就需要注意,在push之前,需要pull一下。

 

 

 

 

 

总结:

Git 是什么?

是分布式版本控制系统。

 

分布式

 

 

 

版本

软件从开发的第一天,到后期的不断更新,其中每一个节点都是一个版本。

 

 

可以干什么?

对版本进行管理,便于开发的时候,更好的维护项目。

团队协作开发

 

 

常规使用

创建版本库:git init  /  git clone url

在本地git版本库进控制

l  git add

l  git commit

l  git reset

l  git log/git reflog

l  git status

l  git config

l  git branch

 

如果在gitHub网站上创建分支,是fork

 

 

 

Fork的意思是叉子

 

 

 

 

 

 

作业:

l  先注册GitHub账号。

l  将自己的项目托管到GitHub上。

l  利用GitHub结合Git尝试团队开发。

 

 

接下来,就可以 在自己的简历中复制这一行:

 

熟练使用Git进行项目的版本控制和团队协作开发。

 

问:在使用Git的时候遇到什么问题没有?

 

版本冲突。

两种情况:

第一,在推送的时候,自己的当前版本不是最新版本,此时先拉取,再推送。

第二,如果多个程序员在编辑同一个文件,所以需要商量一下,让其中先完成,push,另一个人再拉取,修改,然后在push。

 

大众化简历:

精通/熟练/了解

HTML5、CSS3、jquery

遵循w3c标准/规范,注重语义化,快速进行web 页面

有良好的编码规范(注释,命名规范)

使用Git对项目进行版本控制以及团队协作开发。

对js有深入的了解,可以使用js来实现各种效果,熟悉oop。

能够使用HTML5、css3、zepto进行web app开发。熟练使用jquery mobile快速进行web app开发。

了解Angularjs

BootStrap

熟悉Node.js

熟练使用Ajax进行异步的交互。

 

定制建立

投其所好。

看着了哪家公司,先看人家的招聘要求。

对号入座

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Eilen/p/6486570.html

相关文章:

  • flex常用快捷键
  • 读写csv文件
  • AIR应用程序中配置文件(*-app.xml)的说明
  • docker 初步使用
  • flex正则表达式语法
  • POJ 1981 Circle and Points (扫描线)
  • flex 自定义事件
  • spss-数据抽取-拆分与合并
  • flex metadata tag学习
  • 201521123108 《Java程序设计》第2周学习总结
  • flex子组件关闭父组件
  • Eclipse安装svn插件问题解决
  • 利用chmod获取权限
  • tomcat一闪而过解决方法
  • APP加固
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • es的写入过程
  • httpie使用详解
  • Java 内存分配及垃圾回收机制初探
  • Java的Interrupt与线程中断
  • Leetcode 27 Remove Element
  • REST架构的思考
  • spring boot下thymeleaf全局静态变量配置
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 官方解决所有 npm 全局安装权限问题
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 利用DataURL技术在网页上显示图片
  • 面试遇到的一些题
  • 运行时添加log4j2的appender
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #Linux(Source Insight安装及工程建立)
  • #pragma once
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (8)STL算法之替换
  • (9)目标检测_SSD的原理
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十八)三元表达式和列表解析
  • (数据结构)顺序表的定义
  • (转)重识new
  • (转载)利用webkit抓取动态网页和链接
  • .bat批处理(六):替换字符串中匹配的子串
  • .Net 4.0并行库实用性演练
  • .net core 连接数据库,通过数据库生成Modell
  • .net framework4与其client profile版本的区别
  • .NET MVC之AOP
  • .net wcf memory gates checking failed
  • .NET基础篇——反射的奥妙