​git入门教程和vagrant使用

2019-06-23 07:17:52 24

1.1 git 是什么

  git 是一种版本控制器 .

  更直白说 , 团队开发时 , 管理代码用的软件 .

  面试时 , 容易被问到的一个东西 .

  发展历史

  Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

  Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

  事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

  你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

  不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

  安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

  Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

  Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

  Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

  历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

  1.2 安装

  git 在 Linux,Mac,Win 下都可以安装 .

  本文是以 Win7 系统为环境编写的 .

  Window 环境 :

  到 https://git-for-windows.github.io/ 下载软件 , 双击 , 一路 "Next", 安装完毕

  到开始菜单找 git bash 如下图

  

 


  或者右键

  

 


  如果是右键 git Bash Here 此时工作路径是在当前你到bash的 工作目录

  比如:

  

 


  

 


  此时工作目录会在 githourse 文件夹

  Linux 环境安装 git:

  # ubuntu,debian#

  $ sudo apt-get install git

  centos,redhat 系统

  # yum install git

  1.3 报家门

  人在江湖 , 岂能没有名号 .

  开源教主 Richard ['rɪtʃəd] Matthew Stallman 的江湖名号 RMS.

  Linux 环境安装 git:

  

 


  centos,redhat 系统

  

 


  在你用 git 之前 , 要先报家门 , 否则代码不能提交

  

 


  

 


  

 


  1.4 代码管理

  1.4.1 创建版本库

  

 


  注意:不要把仓库建立在中文目录,可能会出现问题

  .git 是个隐藏目录,不要乱碰,你的每次代码提交改动它都给你记着来

  1.4.2 添加文件

  在 E:/test 目录下 , 用你喜欢的编辑器 (sublime/editplus/notepad,vim 等 ),

  开发你的程序 . 比如 , index.php

  

 


  编辑 PHP 文件后 , # git status , 查看仓库状态

  实例如下

  

 


  

 


  此时会发现颜色是红色标识说明还有纳入版本库

  我们需要两步 , 让 git 仓库管理 index.php

  1:把index.php提交到 暂存区

  

 


  2:把index.php提交到 版本库

 

 


  

 

实例如下


  

 


  远程推送到码云

  https://www.cnblogs.com/Pond-ZZC/p/6710867.html

  4. 编写帮助文件

  · touch README.md (创建帮助文件)

  · git add README.md (添加帮助文件)

  · git commit -m "注释内容” (添加注释)

  5. 连接远程仓库

  · git remote add origin https://git.oschina.net/username/cccc.git (你的远程仓库地址地址)

  6. 上传代码到码云

  · 把你要上传的文件拷贝到 repo 文件夹下;

  · 使用 git push -u origin master 上传文件到码云

  ps:

  · push 之前,最好要 pull 一次;

  · init 之后,记得要进行一次 add 和 commit 操作;

  · 若报这样的错误,请使用 git push -u origin master -f 强制push;

  

 


  · 刷新码云项目页面,若只传了 README.md 文件,请进行如下操作:

  a. git add . (添加目录下所有项目,add与 . 之间有空格)

  b. git commit -m “添加注释信息" (添加注释信息)

  c. git push -u origin master (再去 push 要上传的文件)

  查看日志:

  git log

  日志简要显示

  git log --pretty=oneline

  分支:

  

 


  

 


  查看分支命令

  git branch

  创建分支:

  git branch wehcat

  切换分支

  Git checkout wechat

  合并分支:

  git merge 分支名称

  1.4.3 日志

  查看日志:命令

  

 


  

 


  有时候在不是太好显示 可以在一起显示

  命令:$ git log --pretty=oneline

  可以看到 如下画面

  

 


  1. 合并分支 如果出现 error : you need to resolve your current index first

  意思是:merge失败,有conflicts没解决,可以:

  1、解决conflicts后再次执行merge;

  2、回退到merge前

  1. 执行:git reset --merge

  3.4 版本切换

  

 


  命令:$ git log --pretty=oneline

  当我们查看日志显示如上画面 可以看到所有的日志在一起显示的的

  

 


  红色箭头处 标明 HEAD 标识当前文件游标所在的地方也是文件最新的版本

  如果要切换版本回滚到之前的版本 输入如下命令

  

 


  此时就回滚到最初的版本号

  其中 $ git reset --hard HEAD^^^

  这个命令中的^ 代表从游标回滚几个版本 一个^ 就是往下移动一个指针 此处我们移动三个指针 类似数组的下标操作

  此时版本号回滚到 7cf2a8a 这个版本

  

 


  此时我们查看日志发现 只有一个文件且是最初的版本 如果我们想回滚到最新的版本是不是没有办法了呢 答案是 可以的

  查看所有日志操作记录详细记录命令:

  

 

如下图:


  

 


  我们从日志中可以看到最新的版本号是 902d078

  我们 输入命令 $ git reset --hard 902d078

  

 


  此时我们再次输入 git log --pretty=oneline

  

 


  此时游标在902d078 这个版本号

  3.5 版本撤销 与删除

  创建 $ touch 111.txt

  删除

  rm 112.txt

  找回被删除的文件

  查看状态

  

 


  从工作区恢复

  

 


  恢复到暂存区

  


  3.5 自动化部署工具 vagrant

  简介:

  vagrant提供了易于配置,重复性好,便携式的工作环境,这些对开发人员非常有用,它可以让开发人员可以创建简单且可重复使用的基于VirtualBox的虚拟机(现在也支持VMware和AWS等),这些虚拟机可以快速的创建和销毁。vagrant也可以和puppet,chef等结合,实现虚拟机管理的自动化。vagrant的官网:http://www.vagrantup.com

  vagrant是简便虚拟机操作的一个软件,而使用虚拟机有几个好处:

  1、为了开发环境与生产环境一致(很多开发环境为windows而生产环境为linux),不至于出现在开发环境正常而移步到正式生产环境时出现各种问题,而vagrant通过共享文件,可以实现在主机(windows)下的IDE编写代码操作,直接在虚拟机(linux)中运行展示出效果。

  2、在vagrant中只需要搭配一次开发环境,然后就可以将搭配好的环境系统镜像打包发送给其他的同事用了,其他同事只需要下载vagrant和virtualBox,然后配置下共享目录后就可以开发了,再也不需要关心配置环境的问题了。

  3、目前好多扩展如swoole、redis等对linux支持更好,甚至有些只支持linux,所以采用虚拟机,再也不需要为学习新技术找借口了。

  相关环境机软件版本:主机:win7;虚拟机:CentOS 7 x86_64;vagrant:1.9.5;virtualBox:

  需要用到的工具 vagrant ,box centos7

  首先下载我提供的 vagrant 安装包

  链接:https://pan.baidu.com/s/1EeqzGq5xQAN1sEwSVCoLlg 密码:hmlc

  VirtualBox-4.3

  链接:https://pan.baidu.com/s/13ZI77f8tDRW_mI87EAV8bA 密码:5bhm

  Centos7 地址

  链接:https://pan.baidu.com/s/1cjEM0lVmaYvZ4E8CDCVgzQ 密码:72rl

  1.1首先安装 vagrant 一路Nex安装

  安装完成后打开 windows 命令行输入 、

  

 


  表示安装成功

  1.2 安装virtualBox

  方法/步骤

  00001.

  先从官网下载一个最新版本的安装包,根据自己的系统下载对应的版本。

  00002.

  

 


  00003.

  00004.

  双击打开或者管理员身份运行VirtualBox-win.exe,打开安装向导,点击「Next >」,进入下一步。

  00005.

  

 


  00006.

  00007.

  在这个界面选择要安装的功能组件,按顺序分别是主程序(必选),VirtualBox USB驱动支持(安装后可以支持外接USB),虚拟机的网络支持(包括桥接的跟主机模式的网络)最后一个就是VirtualBox的Python 2.X的支持。这里可以不用动直接默认就行了。安装路径默认在C盘,点击「 Browse 」选择其他的路径(比如D盘),然后点击「Next >」,进入下一步。

  00008.

  

 


  00009.

  00010.

  此界面为选择快捷方式,分别是在开始菜单创建快捷方式,在桌面创建快捷方式,在快速启动栏创建,关联文件。这个可以根据自己的喜好来选择。然后点击「Next >」。

  00011.

  

 


  00012.

  00013.

  弹出警告界面,提示安装网络组件会重置当前网络,点击「 Yes 」。

  00014.

  

 


  00015.

  00016.

  准备安装,点击「 Install 」进行安装。

  00017.

  

 


  00018.

  00019.

  软件正在安装中。

  00020.

  

 


  00021.

  00022.

  弹出Windows安全提示框,勾选“始终信任来自Oracle Corporation的软件”,点击「 安装 」。

  00023.

  00024.

  安装完成界面,勾选表示安装完成后启动Oracle VM VirtualBox虚拟机,点击「 Finish 」

  00025.

  

 


  00026.

  00027.

  打开Oracle VM VirtualBox管理器,你会发现界面已经自动转换为中文了。

  00028.

  

 


  00029.

  00030.

  11

  00031.

  至此,虚拟机VirtualBox的下载与安装步骤已经完成了,是不是很简单呢。

  00032.

  3.6 配置 vagrant + centos7 整合宝塔面板

  1:首先 如果 在磁盘下新建一个vagrant 文件夹 如果你的系统是苹果系统

  就在 根目录下 建立一个 vagrant 文件夹 主要不能有中文字出现

  如图 此教程是在Windows下配置的如图

  

 


  苹果系统也一样的

  建立好vagrant文件夹后 ,把下载好的centos7镜像放到此目录

  然后 使用 git工具

  

 


  添加我们下载好的box文件

  $ vagrant box add centos7 ~/centos-7.0-x86_64.box

  正常输出如下:

  00001.

  ==> box: Box file was not detected as metadata. Adding it directly...

  ==> box: Adding box 'centos72' (v0) for provider:

  box: Unpacking necessary files from: file:///Users/***/Downloads/vagrant-centos-7.2.box

  ==> box: Successfully added box 'centos7' (v0) for 'virtualbox'

  00002.

  3、之后输入:

  $ vagrant init centos7

  输出如下:

  A `Vagrantfile` has been placed in this directory. You are now

  ready to `vagrant up` your first virtual environment! Please read

  the comments in the Vagrantfile as well as documentation on

  `vagrantup.com` for more information on using Vagrant

  这时,文件夹‘~/vagrant’中应该存在‘Vagrantfile’文件

  4、我们可以打开看看这个文件,并修改文件如下:

  

 


  第一个圈是配置静态ip的

  第二个是配置映射目录的

  3: 执行 vagrang up 命令启动虚拟机

  

 


  启动完成后我们修改虚拟机的ip地址

  首先我们使用 vagrang ssh 进入centos7 系统

  然后我们会看到

  

 


  此时我们的linux用户是 vagrant 默认密码 vagrant

  因为我们要修改静态ip地址 所以 我们要切换 到root用户

  此时 我们 使用 su root 这个命令

  

 


  提示你输入密码 root的默认密码是 vagrant

  

 


  可以看到我们已经成功切换到了root用户

  开始修改ip

  第一步:进入网络配置文件目录

  首先,确保在root用户下进行操作。进入网络配置文件network-scripts目录下。查看当前 在使用的网卡 watch cat /proc/net/dev

  service network restart命令即可配置静态IP地址

  

 


  

 


  我们看到 有个 ifcfg-enp0s3 这个网卡配置文件我使用vi命令修改这个配置文件

  

 


  打开后看到类似这样的

  

 


  先按下i 进入编辑模式 修改成如上图 ip可以不说116 只要不跟你目前的局域网冲突即可建议往100以后 修改后 按ESC 切换到保存光标下 然后在英文状态下输入 :wq 保存退出即可

  重启虚拟机 先退出虚拟机

  

 


  输入 exit; 后面有个分号不要输入错了

  然后输入 vagrangt halt 关机 在开机

  3.7 安装宝塔面板

  Centos安装命令:

  yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

  需要注意的是vagrant 和nginx 同步代码的时候往往会有延迟 我们需要去宝塔面板下nginx目录的配置文件关闭一个选项

  Sendfile 设置为off

  

 


  会导致前台资源不能及时更新 关闭即可

  配置文件地址