git版本控制系统更新
版本控制系统:
一、概念:
版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
二、版本控制系统分类
1、本地版本控制系统
在本地记录文件内容变化情况。
缺点:不能进行多人协作
2、集中式版本控制系统
有一个中央服务器,专门用于管理代码,所有人通过中央服务器,进行代码同步。【代表:SVN 版本控制】
优点:解决了多人协作问题
缺点:太过于依赖中央服务器,与网络。
3、分布式版本控制系统
分布式版本控制系统就是一个专门用于管理代码的远程仓库,每个人本地都有一个远程仓库的完整镜像。
优点:解决多人协作开发问题,不是特别依赖远程仓库,不是特别依赖网络。【也不是不依赖】
三、git 基本入门
注意 git 的安装:(1)不能安装在中文目录(2)最好不使用桌面管理软件【360,百度杀毒等等】
1、git 的三个区
工作区:我们写代码的地方
暂存区:暂时存储的区域,git 中的代码不能直接从工作区存储到仓库中,需要现将其添加到暂存区,再从暂存区添加到仓库【目的是为了避免错误操作】
仓库区:将暂存区的代码转存到 git 仓库中,生成版本号。
2、git 基本命令
【2.1】git status:查看文件状态【红色表示再工作区,绿色表示再暂存区 】
【2.2】git status -s: 简化日志输出格式
【3.1】git add 文件名/目录名:将文件从工作区添加到暂存区
【3.2】git add . :将当前目录下所有文件一次性提交到暂存区 【git add -A 或 git add -all】
# 将index.html添加到暂存区
git add index.html
# 将css目录下所有的文件添加到暂存区
git add css
# 将当前目录下所有的js文件添加到暂存区
git add *.js
# 添加当前目录下所有的文件
git add .
git add -A
git add --all
【4.1】git commit -m "提交说明":将文件从暂存区添加到仓库区,生成版本号。
【4.2]git commit -a -m "提交说明"(快速提交,之前有提交过文件)
【4.3】git commit --amend -m "提交说明":如果提交说明输入错了,修改使用命令。
# 将文件从暂存区提交到仓库
git commit -m "提交说明"
# 如果不写提交说明,会进入vi编辑器,没有写提交说明,是提交不成功的。
git commit # 需要使用vi输入内容
# 如果是一个已经暂存过的文件,可以快速提交,如果是未追踪的文件,那么命令将不生效。
git commit -a -m '提交说明'
# 修改最近的一次提交说明, 如果提交说明不小心输错了,可以使用这个命令
git commit --amend -m "提交说明"
【5】git config(配置)
【5.1】第一次提交配置:
git config user.name 你的目标用户名
git config user.email 你的目标邮箱名
【5.2】 使用--global 参数,配置全局的用户名和邮箱,只需要配置一次即可。推荐配置 github 的用户名和密码
git config --global user.name *****
git config --global user.email ****
【5.3】git config --list:查看配置信息
【6.1】git log:查看提交的日志
【6.2】git log --oneline:查看简洁的日志
3、git 的对比
【1】git diff:查看工作区与暂存区提交内容的不同
【2】git diff --cached:查看暂存区与仓库区内容的不同
【3】git diff HEAD:查看工作区与仓库区内容的不同(HEAD 表示最新一次的提交)
【4】git diff 版本 1 版本 2:查看两个版本之间的不同
4、git 的重置
【1】git reset:版本回退,将代码恢复到提交过得某一个版本中
【2】git reset --hard 版本号:将代码回退到某一个指定的版本(置三个区)
【3】git reset --soft 版本号:只重置仓库区
【4】git reset --mixed 版本号:重置仓库区与暂存区(默认)
【5】git reflog:查看所有版本信息(使用git log
只能看到当前版本之前的信息)
【6】git reset --hard head~1:将版本回退到上一次提交状态
- ~1:上一次提交
- ~2:上上次提交
- ~0:当前提交
5、git 忽视文件
【忽视文件创建需要在编译器中创建,不然会报错】
在仓库中,有一部分文件是不想被 git 管理的,比如数据的配置密码,写代码的一些思路等等,git 可以通过配置忽略一些文件,这样文件就不用提交了。
【1】方法:注意:该文件是可以将自己忽视的
在仓库根目录下创建一个.gitignore 文件,文件名固定。将不需要被 git 管理的文件路径添加到.gitignore 中。
【忽视.gitignore 文件 (.gitignore)】
# 忽视idea.txt文件
idea.txt
# 忽视.gitignore文件
.gitignore
# 忽视css下的index.js文件
css/index.js
# 忽视css下的所有的js文件
css/*.js
# 忽视css下的所有文件
css/*.*
# 忽视css文件夹
css
6、git 分支操作
在 git 中,分支实质上就是一个指针,每次代码提交后,这个分支指针就会向后移动,保证一直指向最后一次提交的版本。git 中使用 HEAD 指向当前分支。
【1】每次 commit 提交,都会在仓库区生成一个新的版本
【2】在第一次生成版本后,会自动创建一个 master 分支,指向当前版本
【3】所有的分支,本质上就是指针
【4】默认有一个 HEAD 指针永远指向当前分支
git 分支命令
【1】git branch 分支名称:创建分支。
【2】git branch:查看所有分支。
【3】git checkout 分支名称:切换分支(HEAD 指针指向另一个分支)
当前分支任何操作不会影响其他分支。除非进行分支合并
提交代码时,会产生版本号,当前分支会指向最新的版本号。
【4】git checkout -b 分支名称:创建并切换分支(创建一个新分支,将 HEAD 指针指向当前分支)
【5】git branch -d 分支名称:删除分支(注意:不能在当前分支删除当前分支,需要切换到其他分支,才可以删除)。
【6】git merge 分支名称:将其他分支内容合并到当前分支。
git 合并冲突
【1】对于同一个文件,如果有多个分支要合并,容易出现冲突。
【2】合并分支时,出现冲突需要手动处理,在进行提交。(一般将自己代码放在冲突代码之后即可)。
四、git 远程仓库
1、github 与 git【github 中文版是码云】
git 与 github 没有直接的关系。
git 是一个版本控制工具。
github 是一个代码托管平台,开源社区,是 git 的一个远程代码仓库。
注意: 创建 git 项目时,不能有中文。
git clone
- 作用:克隆远程仓库的代码到本地
- git 克隆默认会使用远程仓库的项目名字,也可以自己指定。需要是使用以下命令:
git clone [远程仓库地址] [本地项目名]
git push
- 作用:将本地仓库中代码提交到远程仓库
git push 仓库地址 master
在代码提交到远程仓库,注意 master 分支必须写,不能省略
git pull
- 作用:将远程的代码下载到本地
- 通常在 push 前,需要先 pull 一次。
# 获取远程仓库的更新,并且与本地的分支进行合并
git pull
git remote
每次 push 操作都需要带上远程仓库的地址,非常的麻烦,我们可以给仓库地址设置一个别名
# 给远程仓库设置一个别名
git remote add 仓库别名 仓库地址
git remote add jepson git@github.com:jepsongithub/test.git
#删除jepson这个别名
git remote remove jepson
#git clone的仓库默认有一个origin的别名
SSH 免密码登陆
git 支持多种数据传输协议:
- https 协议:
https://github.com/jepsongithub/test.git
需要输入用户名和密码 - ssh 协议:
git@github.com:jepsongithub/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“通信”,不用输入密码确认身份了
git版本控制系统更新的更多相关文章
- Git版本控制系统VCS
Git版本控制系统VCS 一.版本控制系统基本情况说明 版本控制是一种记录一个或者若干个文件内容的变化,以便将来查阅特定版本修订情况的系统 1.作用 记录文件的所有历史变化 随时可回复到任何一个历史状 ...
- git版本控制系统重新认识
git 版本控制系统 目标:完全搞懂git分布式版本控制系统 搭建git版本控制系统 cvs集中化版本控制系统--集中式管理的服务器 git分布式版本控制系统--会将原始代码仓库镜像下来 新项目使用g ...
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这 ...
- git版本控制系统小白教程(上)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享. Git介绍 Git是目前世界上最先进的分布式版本控制系统.并且它是一个开源的分布式版本控制系 ...
- git版本控制系统小白教程(下)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享,查看上部请点传送门. 删除文件 git删除文件一般有三种情况,第一种是在工作区修改了文件,但是 ...
- Git版本控制系统之基本使用
最早是通过接触著名的开源社区Github了解到Git的,但一直没有系统学习过.这次下定决心从头到尾系统的学一学,也将学习过程记录于此,供大家批驳.本篇文章先从以下几个方面简单了解一下Git: Git的 ...
- 初识git版本控制系统
当下git分布式版本控制系统越来越火,掌握git也是必须的一个技能.因此,对git做了如下学习. Git初级指南 1. 先安装git.(ps:在select cmponents处要勾选Git Bash ...
- 如何选择版本控制系统 ---为什么选择Git版本控制系统
版本控制系统 "代码"作为软件研发的核心产物,在整个开发周期都在递增,不断合入新需求以及解决bug的新patch,这就需要有一款系统,能够存储.追踪文件的修改历史,记录多个版本的开 ...
- git版本控制系统常见操作总结
简介 Git是强大的版本控制系统,主要功能是针对代码.配置文件等文本进行版本控制.备份等,同时个人认为还是分发代码的一个不错的方式. 常见用法 #创建远程git仓库 [root@test88 ~]# ...
随机推荐
- 将项目添加到服务上时报web modules的错误
将项目添加到服务上时报web modules的错误如下图: 这是tomcat的版本和web modules的版本不支持造成的,如果在如下地方修改不了: 这时候就要在项目的根目录修改如下图: 用工具打开 ...
- CEF JS实现获取剪贴板图片的DataURL
转载:https://www.deanhan.cn/js-paste-upload.html 转载:https://segmentfault.com/a/1190000002915597 转载:htt ...
- analysed of J-SON/XML processing model Extend to java design model (J-SON/XML处理模型分析 扩展到Java设计模型 )
一.JSON和XML 1.JSON JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换.JSON ...
- 【.Net Core】Assets file project.assets.json not found. Run a NuGet package restore
问题起因 添加 .net core的Project build失败. 提示以下error: Assets file project.assets.json not found. Run a NuGet ...
- Vue-admin工作整理(六):路由元信息
路由源信息:每一个路由对象,可以配置一个meta字段,它里面可以存放一些我们定义的信息,比如说页面是否需要一个权限 to.meta && setTitle(to.meta.title) ...
- 数据类型(data type)
基本数据类型(primitive data type):字符型(2个字节),布尔型(一位),byte(1个字节),short(两个字节),int(4个字节),long(8个字节),float(2个字节 ...
- 请为CMyString类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。
如下为类型CMyString的声明,请为该类型编写构造函数.copy构造函数.析构函数和赋值运算符函数. class CMyString { public: CMyString(const char* ...
- 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)
A Drawing Borders 很多构造方法,下图可能是最简单的了 代码: #include<bits/stdc++.h> using namespace std; ; struct ...
- 复杂的xml资源
某些资源类型是由XML文件表示的多个复杂资源的组合.例子是一个animated vector drawable,它是一个封装了vector drawable和动画的drawable资源.这需要使用至少 ...
- scrapyd的安装和scrapyd-client
1.创建虚拟环境 ,虚拟环境名为sd mkvirtualenv sd #方便管理 2. 安装 scrapyd pip3 install scrapyd 3. 配置 mkdir /etc/scrapy ...