Git使用教程

Git中常用的概念

Git是免费、开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

工作目录(workspace):是项目的目录,保存项目所有的文件,在电脑本机能够看到的文件和目录

暂存区(index/stage):是内存中的一个区域,用于临时存储项目中文件的变化

Git仓库(Repository):是一个特殊的目录,保存着项目中所有文件的变化记录,执行git clone地址就是把

远程仓库克隆到本地仓库,他是一个存放本地的版本库,

在这里插入图片描述

一、Git命令

第一次使用Git软件之前,告诉Git你是谁

git  config  --global  user.name  "自定义用户名"
git  config  --global  user.email   "用户邮箱"

查看配置列表

git  config  --list

1.初始化Git仓库

git  init 

会在当前目录下生成一个.git目录,用于存储项目中所有文件的变化

2.查看Git系统状态

git  status

可以检测哪些文件发生了变化,例如:新文件出现、文件修改、文件删除…

3.将文件从工作目录添加到暂存区

git  add  文件名称   #将指定的文件添加到暂存区
git  add  .         #将所有变化的文件添加到暂存区

4.将暂存区文件提交到Git仓库

git  commit  -m  "提交说明"

5.查看提交日志

git  log      # 只能查看之前的提交日志,无法查看之后的
git  reflog   # 可以查看所有的提交日志、回退记录...

步骤1:新建2.html,随便写内容,添加到暂存区,提交到仓库

步骤2:新建css目录,添加1.css和2.css文件,随便写内容,添加到暂存区,提交到仓库

步骤3:删除1.html和1.css,添加到暂存区,提交到仓库

6.历史回退

git  reset  --hard  提交ID

练习:在tedu目录下初始化一个Git仓库

步骤1:新建index.html文件,随便写内容,添加到暂存区,提交仓库

步骤2:新建list.html和detail.html,随便写内容,添加到暂存区,提交到仓库

步骤3:新建img目录,放入两张图片,添加到暂存区,提交到仓库

步骤4:修改index.html文件,删除detail.html,添加到暂存区,提交到仓库

步骤5:查看所有的提交日志,回退到第1个版本,再回退到最新版

7.忽略文件

有些文件不需要Git系统来管理,可以忽略

在工作目录中,新建 .gitignore 文件,把要忽略的文件写入进去

通常 node_modules目录需要被忽略的文件。

git remote

git remote 查看关联的远程仓库名称
git remote add origin url 添加一个远程仓库
git remote show [remote] 显示某个远程仓库的信息

二、远程仓库(代码托管平台)

码云 www.gitee.com 国内最大

GitHub www.github.com 全球最大

1.将本地仓库推送到远程仓库

git  push  -u origin  分支名称  # 第一次提交
git  push origin  分支名称  # 非首次提交

输入账号密码后,Windows会记录账号密码,需要删除记录的,才可以重新输入

打开 控制面板 -> 凭据管理器 -> Windows凭据

2.将一个远程仓库克隆到本地

在要克隆(下载)的目录中,打开git bash

git  clone  仓库地址

3.拉取一个分支到本地仓库

git  pull  仓库地址  分支名称

三、分支

在不影响主线的前提下,实现并行开发,默认只有一个主分支master

1.查看所有的分支

git  branch

2.新建分支

git  branch  分支名称

拷贝当前分支中提交的版本的文件拷贝一个新的分支

3.切换分支

git  checkout  分支名称

4.合并分支

git  merge  分支名称

合并过程中可能会产生冲突,需要打开用冲突文件,手动解决。

重新提交到仓库

练习:新建商品分支product,切换到商品分支,新建路由器模块product.js,随便写代码,添加到暂存区,最后提交仓库。

练习:在主分支下新建购物车分支shopping,切换到购物车分支,新建路由器模块shopping.js,随便写代码,添加到暂存区,最后提交到仓库。

练习:在主分支下新建订单分支order,切换到订单分支,新建路由器模块order.js,随便写代码,添加到暂存区,最后提交到仓库。

最后切换回主分支

补充:

创建与合并分支

在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支。

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

                  HEAD
                    │
                    │
                    ▼
                 master
                    │
                    │
                    ▼
┌───┐    ┌───┐    ┌───┐
│   │───▶│   │───▶│   │
└───┘    └───┘    └───┘

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

                 master
                    │
                    │
                    ▼
┌───┐    ┌───┐    ┌───┐
│   │───▶│   │───▶│   │
└───┘    └───┘    └───┘
                    ▲
                    │
                    │
                   dev
                    ▲
                    │
                    │
                  HEAD

你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

                 master
                    │
                    │
                    ▼
┌───┐    ┌───┐    ┌───┐    ┌───┐
│   │───▶│   │───▶│   │───▶│   │
└───┘    └───┘    └───┘    └───┘
                             ▲
                             │
                             │
                            dev
                             ▲
                             │
                             │
                           HEAD

假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:

                           HEAD
                             │
                             │
                             ▼
                          master
                             │
                             │
                             ▼
┌───┐    ┌───┐    ┌───┐    ┌───┐
│   │───▶│   │───▶│   │───▶│   │
└───┘    └───┘    └───┘    └───┘
                             ▲
                             │
                             │
                            dev

所以Git合并分支也很快!就改改指针,工作区内容也不变!

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:

                           HEAD
                             │
                             │
                             ▼
                          master
                             │
                             │
                             ▼
┌───┐    ┌───┐    ┌───┐    ┌───┐
│   │───▶│   │───▶│   │───▶│   │
└───┘    └───┘    └───┘    └───┘

真是太神奇了,你看得出来有些提交是通过分支完成的吗?

下面开始实战。

首先,我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用git branch命令查看当前分支:

$ git branch
* dev
  master

git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

Creating a new branch is quick.

然后提交:

$ git add readme.txt 
$ git commit -m "branch test"
[dev b17d20e] branch test
 1 file changed, 1 insertion(+)

现在,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master
Switched to branch 'master'

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

git-br-on-master

现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev
Deleted branch dev (was b17d20e).

删除后,查看branch,就只剩下master分支了:

$ git branch
* master

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev
Deleted branch dev (was b17d20e).

删除后,查看branch,就只剩下master分支了:

$ git branch
* master

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值