Git基本使用

Git基础

版本控制系统(VCS)

Version Control System

是用来解决什么问题的?

在开发过程当中,我们经常需要,将代码返回到之前某个时刻所开发的版本,如果没有版本控制工具,那么我们只能通过拷贝文件。

拷贝文件的方式,不够简洁,而且会产生很多个文件。

版本控制工具,可以用来记录我们每一次的修改历史(版本), 当我们想要使用之前的版本的时候,直接使用这个工具,就能找回之前的代码。

版本管理系统分类

  • 本地版本控制

    在这里插入图片描述

  • 集中式版本控制(例如:SVN)

在这里插入图片描述

  • 分布式版本控制(例如:Git)

在这里插入图片描述

Git

版本控制工具(分布式的版本控制工具)

  1. 用Git来做什么?

将代码进行版本保存,每实现一个功能,可以保存一次,这样的话,会在git中形成一个版本库

如果以后我们想要回退到代码的某个版本的时候,我们可以使用git,将对应版本的代码从版本库中获取出来!

git可以非常方便的实现多人协作开发。

工作区、暂存区、仓库区、远程仓库

git仓库会分成三个区

工作区:我们书写代码的地方,工作的目录就叫工作区。

暂存区:暂时存储的区域,在git中,代码无法直接从工作区提交到仓库区,而是需要先从工作区添加到暂存区,然后才能从暂存区提交到仓库区。暂存区的目的是避免误操作。

本地仓库区:将保存在暂存区域的内容永久转储到 Git 仓库中,生成版本号。生成版本号之后,就可以任何的回退到某一个具体的版本。

远程仓库:上面三个都是我们本地的,远程仓库是我们统一存放代码的地方,不是存在本地,比如公司中,我们开发的项目会统一放在一台服务器上便于我们开发的时候获取,可以用来共享代码的,代表性的一个远程仓库就是Github

使用说明

基本命令

  1. 配置用户名和邮箱
# 这个命令一个电脑基本上只需要执行一次!
git config  --global user.name xxx
git config  --global user.email xxx@gmail.com
  1. 使用Git管理项目
# 这个命令一个项目只需要执行一次!
git init

​ 这个命令其实就是在当前项目中创建了一个.git隐藏文件夹,我们所有的代码的版本信息最终都会被存储到这个文件夹里

  1. 查看文件状态

查看当前项目中,所有文件的状态(有没有被git管理,有没有修改)

git status
  1. 管理文件

让这个文件被git管理起来,添加到暂存区

git add 文件名
# 当前文件夹下的
git add .
# 所有的文件
git add *
# 将当前目录下所有的js文件添加到暂存区
git add *.js
  1. 删除暂存区文件
git rm --cache file
  1. 保存到版本库

将当前项目中的修改内容,形成一个新的版本,保存到版本库中,可以经过多次add后,让这些一起提交,提交的文件会生成一个32位的hash数作为版本号

git commit -m "提交的描述信息"
  1. 历史版本

使用这个命令,我们可以查看,以往提交的历史版本信息

git log
  1. 回退到指定版本

切换到指定版本,版本号可以只取前几位,只要前几位没有重复的就行

git reset --hard 版本号
# 通过head~n来返回到前n个版本情况
git reset --hard head~n
# 比如head~1将版本回退到上一次提交
# head~0 或者 省略 ~0 表示当前提交
  1. 查看所有的版本

有时候切换到之前版本后,又想切回原来的,这里通过git log 无法查到那个版本,就需要用这个命令

git reflog

分支

在git中有一个默认的分支,叫master,我们默认的提交都存在这个分支上

master分支在刚一开始的时候是没有的,只有进行了第一次提交之后,master分支才会被自动创建出来

使用场景: 只要是做一个新的功能模块,我们一般都会开辟一个新的分支进行开发,开发完毕之后,将新的分支中的内容和当前分支进行合并

  1. 查看分支信息
git branch
  1. 新建分支
git branch 分支名
# example
git branch branch1
  1. 切换分支
git checkout 分支名
# example
git checkout branch1
  1. 创建并切换分支
git checkout -b 分支名
# example
git checkout -b branch1
  1. 删除分支
git branch -d 分支名
# example
git branch -d branch1
  1. 合并分支

现在假设我们需要把branch1分支合并到master分支

步骤:

  • 1、切换到master分支
  • 2、执行 git merge branch1
git merge 要合并到当前分支的分支名
# example
git merge branch1
  1. git diff可以查看每次提交的内容的不同
# 查看工作区与暂存区的不同
git diff

# 查看暂存区与仓库区的不同
git diff --cached

# 查看工作区与仓库区的不同,HEAD表示最新的那次提交
git diff HEAD

# 查看两个版本之间的不同
git diff c265262 de4845b

远程仓库

  1. 克隆远程仓库的代码到本地
git clone [远程仓库地址]
# 从远程仓库克隆到本地的时候给克隆的项目命名
git clone [远程仓库地址] 项目名称
  1. 将本地仓库中代码提交到远程仓库
# 本地分支名:远程分支名
git push [远程仓库地址] master:master
# 如果两个分支名相同,可以只写一个
git push [远程仓库地址] master
  1. 将远程更新的代码下载到本地
# 获取远程仓库的更新,并且与本地的分支进行合并
git pull 远程仓库地址 分支名称
# 如果一开始就是clone过来的,地址就是默认的origin
# 并且拉取的分支和当前分支一样,可以省略后面的,如下
git pull
  1. 给仓库地址设置一个别名

每次push操作都需要带上远程仓库的地址,非常的麻烦,我们可以给仓库地址设置一个别名

# 给远程仓库设置一个别名
git remote add 仓库别名 仓库地址
git remote add xxxx git@github.com:xxxx/test.git

# 删除xxxx这个别名
git remote remove xxxx

# git clone的仓库默认有一个origin的别名

git remote 查看所有的别名
git remote get-url 别名  获取当前别名对应的仓库地址
git remote set-url 别名 url地址  设置当前别名对应的仓库地址

可以通过–help来查看对应命令的帮助

git xxx --help
# 比如
git add --help
git remote --help

忽视文件

在仓库中,有些文件是不想被git管理的,比如数据的配置密码、写代码的一些思路等。git可以通过配置从而达到忽视掉一些文件,这样这些文件就可以不用提交了。

  • 在仓库的根目录创建一个.gitignore的文件,文件名是固定的。
  • 将不需要被git管理的文件路径添加到.gitignore
# 忽视idea.txt文件
idea.txt

# 忽视css下的index.js文件
css/index.js

# 忽视css下的所有的js文件
css/*.js

# 忽视css下的所有文件
css/*.*
# 忽视css文件夹
css

SSH免密登录

git支持多种数据传输协议:

  • https协议:https://github.com/xxxx/test.git 需要输入用户名和密码
  • ssh协议:git@github.com:xxxx/test.git 可以配置免密码登录

每次push或者pull代码,如果使用https协议,那么都需要输入用户名和密码进行身份的确认,非常麻烦。

  • github为了账户的安全,需要对每一次push请求都要验证用户的身份,只有合法的用户才可以push
  • 使用ssh协议,配置ssh免密码,可以做到免密码往github推送代码

SSH免密码登录配置

注意:这些命令需要在bash中敲

  • 1 创建SSH Key:ssh-keygen -t rsa
  • 2 在文件路径 C:\用户\当前用户名\ 找到 .ssh 文件夹
  • 3 文件夹中有两个文件:
    • 私钥:id_rsa
    • 公钥:id_rsa.pub
  • 4 在 github -> settings -> SSH and GPG keys页面中,新创建SSH key
  • 5 粘贴 公钥 id_rsa.pub 内容到对应文本框中
  • 5 在github中新建仓库或者使用现在仓库,拿到git@github.com:用户名/仓库名.git
  • 6 此后,再次SSH方式与github“通信”,不用输入密码确认身份了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值