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

git的相关操作

文章目录

  • 一、介绍
    • 1.1 什么是版本控制
    • 1.2 为什么需要版本控制
    • 1.3 版本控制工具
      • 1.3.1 集中式版本控制工具
      • 1.3.2 分布式版本控制工具
    • 1.4. git的工作机制
    • 1.5 Git和代码托管中心
  • 二、Git常用命令
    • 2.1 设置用户签名
    • 2.2 初始化本地库
    • 2.3 查看本地库状态
    • 2.4 添加到暂存区
    • 2.5 提交本地库
    • 2.6 修改文件
    • 2.7 版本穿梭
  • 三、Git分支操作
    • 3.1 什么是分支
    • 3.2 分支的好处
    • 3.3 分支的操作
      • 3.3.1 查看分支
      • 3.3.2 创建分支
      • 3.3.3 切换分支
      • 3.3.4 合并分支
  • 四、Git团队协作机制
  • 五、GitHub操作
    • 5.1 创建远程仓库
    • 5.2 创建远程仓库操作
      • 5.2.1 创建远程仓库别名
      • 5.2.2 推送本地分支到远程仓库
      • 5.2.3 拉取远程库到本地库
      • 5.2.4 克隆代码到本地库
  • 六、协作
    • 6.1 团队内协作
    • 6.2 跨团队协作
  • 七、SSH免密登录
  • 八、IDEA集成Git
    • 8.1 配置Git的忽略文件
    • 8.2 初始化&提交&添加
    • 8.3 切换版本
    • 8.4 创建分支
    • 8.5 合并分支
  • 九、IDEA集成GitHub
    • 9.1 登录GitHub账号
    • 9.2 分享项目到GitHub
    • 9.3 添加ssh免密登录
    • 9.4 克隆代码到本地
  • 十、码云
    • 10.1 IDEA集成码云
    • 10.2 分享项目到码云
    • 10.3 从GitHub中导入
  • 十一、gitLab自建代码托管平台

一、介绍

Git是一个分布式版本控制工具,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具。

1.1 什么是版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

1.2 为什么需要版本控制

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

1.3 版本控制工具

1.3.1 集中式版本控制工具

通过一个服务器,将多个用户连接到服务器进行文件的记录,用的时候每个人把自己需要的被授权的那部分代码下载到自己的计算机上,提交也是最后提交到服务器上,服务器可以对代码做很好的控制,但是需要有网络,网络断了,就没法工作了,如果服务器宕机了,将无法协同工作。

1.3.2 分布式版本控制工具

分布式就是每个人都有一份完全的代码,提交和管理都是在本地进行,虽然有远端仓库,不过那是最终提交用的,没联网本地也是完整代码的,只是每次需要最新的代码的时候才必须联网;而我们要说的Git就是分布式版本控制软件的代表,对应的网上仓库比较有名的就是Github了;

1.4. git的工作机制

在这里插入图片描述

1.5 Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般简单称为远程库

  • 局域网:GitLab
  • 互联网:GitHub、Gitee

二、Git常用命令

在这里插入图片描述

2.1 设置用户签名

首次使用git需要设置用户签名,否则无法提交带代码。

签名的作用是区分不同操作者的身份,用户签名信息在每一个版本的提交信息中能够看到,以此来确认本次提交是谁做的。

git config --global user.name 用户名

git config --global user.email 用户名

2.2 初始化本地库

git init

在这里插入图片描述

2.3 查看本地库状态

git status

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4 添加到暂存区

git add 文件名

2.5 提交本地库

将暂存区的文件提交到本地库,形成历史版本。

git commit -m "日志信息" 文件名

在这里插入图片描述

查看版本信息的命令:

git reflog//精简版
git log//完整版

2.6 修改文件

文件修改后,文件状态会显示在工作区,此时需要执行git add 文件名命令添加到暂存区,再通过git commit -m "日志信息" 文件名提交到本地库。

2.7 版本穿梭

git reset --hard 版本号

版本号可以通过这个git refloggit log得到。
在这里插入图片描述

head指向master分支,master分支再指向某个版本。

三、Git分支操作

3.1 什么是分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

3.2 分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3.3 分支的操作

命令名称作用
git branch 分支名创建分支
git btranch --v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

3.3.1 查看分支

在这里插入图片描述

3.3.2 创建分支

在这里插入图片描述

3.3.3 切换分支

在这里插入图片描述

3.3.4 合并分支

将hotfix分支合并到master分支上,需要处于master分支的状态下,输入git merge 分支名,完成合并分支(合并只会修改master的内容)。

当有冲突时:

在这里插入图片描述

四、Git团队协作机制

团队协作:成员A push推送项目到代码托管中心,团队中的成员可以把clone项目下来,在修改完以后,成员B push代码后,成员A可以将项目进行pull更新。

跨团队协作
在这里插入图片描述

五、GitHub操作

5.1 创建远程仓库

创建远程仓库教程

5.2 创建远程仓库操作

5.2.1 创建远程仓库别名

查看当前所有远程地址别名:git remote -v

为远程地址创建别名:git remote add git-demo(别名) https://github.com/82877340/git-demo.git

在这里插入图片描述

5.2.2 推送本地分支到远程仓库

git push 别名 分支

在这里插入图片描述

5.2.3 拉取远程库到本地库

git pull 别名 分支

在这里插入图片描述

5.2.4 克隆代码到本地库

git clone 链接

公共仓库克隆不需要登录账号,它会做以下步骤:

  1. 拉取代码
  2. 初始化仓库
  3. 创建别名

在这里插入图片描述

六、协作

6.1 团队内协作

首先成员A需要将成员B邀请进项目,变成项目的成员才可以进行操作。

成员B在克隆代码后,做的更改可以推送到远程仓库,但是要保证自己的代码时刻都是最新的。

6.2 跨团队协作

  1. 团队B找到要操作团队A的项目点击forke
  2. 团队B在自己的远程仓库进行修改,后添加并提交
  3. 点击pull requests,再点击 new pull request,再点击create pull request,填写详细信息完成创建便会发送一个请求。
  4. 团队A在pull request可以看到团队B发送的申请,点击merge pull reqeust就可以将提交的这个申请合并到当前自己的项目中。

七、SSH免密登录

  1. 复制SSH链接,到c盘的user(自己的电脑用户名)目录下,进入git bash界面,输入
ssh-keygen -t rsa -C 823777340@qq.com(邮箱地址)
  1. 进入user目录下的.ssh目录下,复制id_rsa.pub中的内容
  2. 进入账号的settings中,找到SSH and GPG keys,将公钥添加进去即可,后续使用SSH链接进行,pull或push等都不需要再验证密码。

八、IDEA集成Git

8.1 配置Git的忽略文件

与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。

  1. 创建忽略规则文件xxxx.ignore(前缀名随便起,建议是 git.ignore),这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下

在这里插入图片描述

此文件中复制如下内容:

# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
  1. 来到.gitconfig中添加如下内容:
[core]
excludsfile = ‪C:/Users/long/git.ignore
注意:一定是/不是\
  1. 到Idea中配置git的位置

能看到版本信息则说明成功了

在这里插入图片描述

8.2 初始化&提交&添加

在这里插入图片描述

右击文件或目录选择Git下的相关选项就可以进行操作了,红色文件表示未添加到暂存区,绿色文件表示已经添加到暂存区但是没有提交,黑色文件表示未提交。

8.3 切换版本

在这里插入图片描述

8.4 创建分支

在这里插入图片描述

在这里插入图片描述

或者直接点击idea右下角的分支,就可以找到新分支。

8.5 合并分支

处于master分支,点击hot-fix分支,点击合并到当前分支,就会把hotfix的内容合并到master。

在这里插入图片描述

当发生冲突时,需要手动选择接受哪个分支的代码或者点击合并调整代码

在这里插入图片描述

在这里插入图片描述

九、IDEA集成GitHub

9.1 登录GitHub账号

在这里插入图片描述

9.2 分享项目到GitHub

在这里插入图片描述

在这里插入图片描述

9.3 添加ssh免密登录

在这里插入图片描述

9.4 克隆代码到本地

在这里插入图片描述

十、码云

10.1 IDEA集成码云

安装码云插件,在插件中搜索gitee下载安装

在这里插入图片描述

10.2 分享项目到码云

在这里插入图片描述

10.3 从GitHub中导入

在新建仓库时,选择导入即可。

十一、gitLab自建代码托管平台

官网地址:https://about.gitlab.com/

相关文章:

  • ES6--》读懂JS中—Class类
  • 机器学习笔记(三)
  • 【Java 面试题】经典 Java 面试题 200 问(下)
  • 瑞吉外卖之 redis优化缓存
  • [JavaWeb]—前端篇
  • 机器学习感知机原理及python代码实现
  • js 对象
  • 图解Redis 记录
  • 网络安全的行业黑话 ——防守篇之软硬件
  • 使用 CubeMX 配置 RCC 时钟
  • CVPR 2022 Oral 大连理工提出的SCI 快速、超强的低光照图像增强方法 可视化代码
  • CVE-2013-4547 Nginx文件名解析漏洞详解
  • 信息收集之 操作系统识别
  • 程序设计——图书管理系统(附源代码)
  • 纯C实现的贪吃蛇(无EaxyX,详解)
  • SegmentFault for Android 3.0 发布
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 0x05 Python数据分析,Anaconda八斩刀
  • CentOS 7 防火墙操作
  • Centos6.8 使用rpm安装mysql5.7
  • es6--symbol
  • JavaScript实现分页效果
  • Mybatis初体验
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • vue:响应原理
  • 从重复到重用
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 你不可错过的前端面试题(一)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 使用Swoole加速Laravel(正式环境中)
  • #100天计划# 2013年9月29日
  • $().each和$.each的区别
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (pytorch进阶之路)扩散概率模型
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (一)Dubbo快速入门、介绍、使用
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ***通过什么方式***网吧
  • ..回顾17,展望18
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .skip() 和 .only() 的使用
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @Data注解的作用
  • @hook扩展分析
  • [APUE]进程关系(下)