Git简介以及简单使用

Git简介

我们都知道Git是用来做版本控制的,那么到底什么是Git,如何使用Git。下文记录着我的学习过程。

我们先了解几个常用的概念:

  • 版本控制(version control):在我们日常开发过程中,总是要对文件做出修改,每次修改后的文件,就相当于一个新版本,而把这一次次修改的文件记录下来,可以对新版本、旧版本进行操作,就是所谓的版本控制。

  • 版本控制系统:用来记录一次次版本,并可以对其进行操作的系统。主要分成了三类:

    • 本地版本控制系统:相当于对每个版本做一个快照,适合个人开发。
    • 集中版本控制系统:将所有版本数据同一放在中央仓库中,用户同步更新。例如SVN

在这里插入图片描述

  • 分布式版本控制系统:每个人的版本都存放在本地中,通过push,pull等操作上传/拉取到本地。Git就是分布式版本控制系统
    在这里插入图片描述

既然Git是分布式版本控制系统,他存放数据的仓库就不仅仅只是一个中央服务器了,我们还要知道有关Git的几个概念

远程仓库:例如github、码云等都属于远程仓库,用来存放每个版本数据的数据的

本地仓库:每个开发者从远程仓库中拉取下来版本的数据,开发者对文件等进行了修改,用于存放开发者自己修改的数据。

暂存区:修改的数据还未提交到本地仓库,只是放在一个类似缓存的地方存放,这个地方就是暂存区

工作目录:当前开发者正在工作的目录

下面是我们了解一下git的工作流程,如图:

在这里插入图片描述

我们第一次进行开发时,先要将远程仓库的数据克隆(clone)到本地仓库,有时需要创建单独的分支进行开发,我们需要进行创建或切换(checkout)分支,但通常不用。在日常开发中,通常是先将远程仓库中的数据拉取(pull)下来,然后日常改bug,写业务,当完成一个模块的修改时,将修改的内容添加(add)到暂存区,再提交(commit)到本地仓库,一天的开发结束后,推送(push)到远程仓库。


下面就是干货了,记录了Git的使用和常用命令

Git 支持多种数据传输协议。下面介绍两种:

  • SSH 协议

架设 Git 服务器时常用 SSH 协议作为传输协议。 因为大多数环境下服务器已经支持通过 SSH 访问 —— 即使没有也很容易架设。 SSH 协议也是一个验证授权的网络协议;并且,因为其普遍性,架设和使用都很容易。

1、生成ssh公钥(一路回车即可)

ssh-keygen -t rsa -C "[email protected]" 

2、进入.ssh文件中

一般位于c盘下user中,是一个隐藏文件

3、在gitee或github上添加公钥

将.ssh文件中的 id_rsa.pub文件中的内容复制到公钥中
在这里插入图片描述
4、验证是否链接成功

ssh -T gitee.com

Hi "你的名字"! You've successfully authenticated, but GITEE.COM does not provide shell access.
  • HTTPS 协议

HTTPS 协议又是智能 HTTP,他的运行方式和 SSH 及 Git 协议类似,只是运行在标准的 HTTP/S 端口上并且可以使用各种 HTTP 验证机制, 这意味着使用起来会比 SSH 协议简单的多,比如可以使用 HTTP 协议的用户名/密码授权,免去设置 SSH 公钥。

获取Git仓库

在执行git之前,我们首先要设置用户名和邮箱,否则会报错Please tell me who you are.

git config --global user.name YourName
git config --global user.email YourEmail
  • 将尚未进行版本控制的本地目录转换为 Git 仓库
git init  //初始化仓库,会创建一个.git文件
//---------下面的命令后面会解释------------
git add .   
git add LICENSE
git commit -m 'initial project version'
  • 从其它服务器克隆一个已存在的 Git 仓库
git clone https://gitee.com/xxxx/dxxxxe.git
/*--修改了文件--*/
git add .
git commit -m "ces"
git push origin master //可能需要输入密码

配置Git的忽略文件.gitignore

/node_modules   提交时忽略node_modules目录

本地Git的常用指令

1、查看

  • 查看Git配置
git config -l
  • 查看当前文件状态
git status
  • 查看文件不同
git diff  //对比工作目录中当前文件和暂存区域文件之间的差异。修改之后还没有暂存起来的变化内容。
git diff --staged //比对已暂存文件与最后一次提交的文件差异:
git diff --cached  //暂存区和上一个版本的差异
git diff head //本地和上一个把版本的差异
  • 查看历史提交的版本信息
git log //会按时间先后顺序列出所有的提交,最近的更新排在最上面,q键退出
  • 查看本地所有分支的所有操作记录(包括删除的以及reset的内容)
git reflog 

2、添加

  • 将修改内容添加到暂存区
git add index.css index.html //将index.css,index.html添加到暂存区 
git add . //将所有文件加入缓存区,不包括忽略文件
  • 提交到本地仓库
git commit -m "添加的注释"

3、删除

  • 移除暂存区的文件(remove等同于rm)
git remove README.md //移除README.md文件。并连带从工作目录中删除指定的文件
git rm --cached README.md //仅仅从暂存区中移除README.md文件,而不从工作目录也删除掉
  • 重新提交
git commit --amend //重新提交,回直接替换掉原来的提交
  • 撤销提交
git checkout -- index.html
//请务必记得 git checkout -- <file> 是一个危险的命令。 你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。
  • 取消暂存git reset HEAD <file>...
git reset HEAD CONTRIBUTING.md
  • 版本回退
git reset --hard HEAD^ 		//一个尖角号回退一个版本
git reset --hard HEAD~2 	//回退两个版本
git reset --hard number 	//回退到指定版本,number是指定id,reflog可以查看

远程仓库Git常用命令

1、查看

  • 查看远程仓库url
git remote -v //会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。(fetch拉取地址,push推送地址)
  • 查看某个远程仓库git remote show <remote>
git remote show //查看所有
git remote show origin //查看origin的具体信息

2、添加远程仓库

  • git remote add <shortname> <url>
//现在你可以在命令行中使用字符串 origin1 来代替整个 URL。 
git remote add origin1 https://gitee.com/xxxx/xxxx.git  
  • git fetch <remote>
//这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
git fetch origin1

3、拉取远程仓库

git pull origin master

4、推送到远程仓库git push <remote> <branch>

git push origin master//当你想要将 master 分支推送到 origin 服务器时

5、远程仓库的重命名与移除

git remote rename
git remote rename origin1 org  //想要将 origin1 重命名为 org
git remote remove org  //移除org

Git分支常用命令

1、创建分支

git branch dev  //查看所有分支列表

2、切换分支

git checkout dev //切换分支到dev

创建一个分支并切换到创建分支上

git checkout -b dev //创建dev分支并切换到dev分支
/*------相当于---------*/
git branch dev
git checkout dev

3、查看每一个分支

git branch -v //查看每一个分支的最后一次提交

4、删除分支

git branch -d dev //删除dev分支 

5、合并分支:将dev分支合并到master分支上

git checkout master//切换到master分支
git merge dev  //合并dev分支

案例:

你突然接到一个电话说有个很严重的问题需要紧急修补。 按照如下方式来处理:

  1. 切换到你的线上分支。
  2. 为这个紧急任务新建一个分支,并在其中修复它。
  3. 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
  4. 切换回你最初工作的分支上,继续工作。
实现
git checkout master //切换到主分支
git checkout -b solvePro //创建一个分支
git commit -a -m 'bug is solved' //修改bug后提交
git checkout master //再切换到主分支
git merge solvePro //将solvePro合并到主分支上
git branch -d solvePro //因为已经用不到该分支了,所以我们删除掉该分支
发布了21 篇原创文章 · 获赞 82 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Newbie___/article/details/104738903
今日推荐