当前位置: 首页 > news >正文

Git代码版本控制

一    Git概述

git是一个免费的、开源的分布式版本控制系统,可以快速高效的处理从小型到大型的各种项目。

1.1 为什么需要版本控制

这是从个人开发过渡到团队协作。每个人负责一个分支代码的开发,最终能合并到一起。

1.2 集中式版本控制和分布式版本控制

集中式版本控制主要是共用一台服务器,然后每个人都提交一次版本。

分布式版本控制就是每个人都能在自己的电脑里进行版本控制v1版、v2版、v3版等。最新的版本集中在远程库中,程序员每天的工作内容就是从远程库中下载、再推送到远程库中。


二   Git原理

基本原理:工作区--->暂存区--->本地库--->远程库


 三  常用命令

常用命令列表:

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱 设置用户签名
git init初始化本地仓库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m "日志信息" 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

3.1 设置用户签名

这两个命令需要用一下,但不需要记住

需要设置,否则提交代码的时候会报错。签名的作用是区分不同操作者的身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。

git首次安装必须设置一下用户签名,否则无法提交代码。

3.2 初始化本地库

git init    初始化本地库,就可以让git获取这个本地文件的管理权

3.3 常见Linux命令

在目录里面右键git bash here,就能直接进入命令操作(这里指windows操作系统,使用mac的同学要区分)

ll -a命令就能够查看所有隐藏文件

mac 使用ls 查看

要进入.git/目录就  cd .git/ ,返回上一级就 cd ..   

  在vim编辑器里面,yy是复制,p是粘贴

cat 即查看

git和linux是同一个爸爸,所以你会发现git命令和linux有很多相似的地方

4 git status   

查看本地库状态

5 git add 添加暂存区

git add . 就表示所有文件都添加

git add 文件名 代表添加这个 ‘文件名’ 的文件进入缓存区

git rm --cached 文件名 代表从缓存区删除该文件,工作区不会删除

创建新的文件后再使用  git status查看本地库状态,发现

 

6 git commit -m "xx"

就表示提交所有代码 

git commit -m "日志信息" 文件名  将暂存区的文件提交到本地库  形成历史版本

 7 git  reflog 查看精简版本信息

 8 git log 查看详细版本信息

9 版本穿梭

先用git reflog查看版本号,再git reset --hard 版本号 即回到该版本号的代码版本

 此时可以看到 cat 1.c 即为第一个版本


四 Git 分支操作

4.1 什么是分支

简单理解为副本,一个分支就是一个单独的副本

git branch 分支名 --->创建分支
git branch -v         --->查看分支
git checkout 分支名 --->切换分支
git merge 把指定的分支合并到当前分支

五 团队协作

1 不同团队协作

首先fork,从a至b。由b至a,pull request->审核->merge

2 同一团队协作

推送到远程仓库 git push

拉取 git pull

mkdir 新建文件夹

克隆 git clone [url]

六  创建远程

首先准备几个不同账号和邮箱,在GitHub网站中+符号中选择 New repository


另外:

代码使用git操作,文件颜色的变化:

1.若文件显示红色,表示文件未add到git进行管理

2.若文件显示绿色,表示文件已经交给git管理,但从未上传到远程仓库中

3.若文件显示蓝色,表示文件已经上传过远程仓库,且此时本地文件与远程仓库文件不一致

4.若文件显示白色,表示文件与远程仓库完全一致

相关文章:

  • 阿里云9折推荐码:0LGVW2
  • 微信小程序真机调试regeneratorRuntime is not defined错误
  • 给笔记本电脑外接显示器增加副屏
  • wx.getUserProfile is not a function微信小程序报错
  • TCP连接探测中的Keepalive和心跳包
  • 关于Redis的一些好玩东西
  • hot code loading in nodejs
  • java中的基本数据类型
  • Eclipse如何生成jar包
  • 磁盘文件系统管理命令
  • java中char数据类型的使用
  • java中数据类型间的强制转换
  • Linux 命令行发邮件sendmail,mailutils,mutt msmtp
  • System.out.println与System.out.print的区别
  • 用tomcat搭建https
  • 【译】JS基础算法脚本:字符串结尾
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • ES学习笔记(12)--Symbol
  • Hexo+码云+git快速搭建免费的静态Blog
  • HTTP 简介
  • npx命令介绍
  • SpiderData 2019年2月23日 DApp数据排行榜
  • V4L2视频输入框架概述
  • 大整数乘法-表格法
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 两列自适应布局方案整理
  • 如何编写一个可升级的智能合约
  • 如何设计一个微型分布式架构?
  • 我建了一个叫Hello World的项目
  • 用简单代码看卷积组块发展
  • Android开发者必备:推荐一款助力开发的开源APP
  • 积累各种好的链接
  • ​MySQL主从复制一致性检测
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm码农论坛 毕业设计 231126
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)拼包函数及网络封包的异常处理(含代码)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET MVC 验证码
  • .Net Remoting常用部署结构
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net 受管制代码
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net6使用WebSocket与前端进行通信
  • .NET大文件上传知识整理
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET开发不可不知、不可不用的辅助类(一)
  • @WebServiceClient注解,wsdlLocation 可配置
  • [].slice.call()将类数组转化为真正的数组