版本控制神器之Git深入介绍

news2025/5/25 21:34:41

Git简介

Git(全局信息追踪器)。
Git是一个分布式版本控制工具,Git的使用中央仓库不是必须的,用户本地就是一个完整的版本仓库,代码的前进、回退、删除等等操作都可以直接在本地进行,不需要中央仓库。但是,在实际操作中,为了能够和其他同事快速沟通以及合并代码,一般还是会搭建一个中央仓库。Git对分支的管理非常友好,可以快速创建或者合并分支。
Svn集中式的版本控制工具,Svn中,必须要有中央仓库,所有的版本信息都保存在中央仓库中,代码的前进、回退、删除等等操作都需要在中央仓库中进行,用户本地保存的只是版本仓库的一个副本,Svn中的分支非常臃肿。
   

Git安装

https://gitforwindows.org/
  
链接:https://pan.baidu.com/s/1ZuQtqS_qW_YdrDkv1rvqQg
提取码:70uz 
  
配置个人信息
git config --global user.name 'bobo'
git config --global user.email 'dengpbs@163.com'
  
在多个客户端的情况下用身份识别的

  

基本操作

1.创建版本库
指定一个文件夹位置即可。
  
2.初始化操作
我们要想将某个文件夹作为我们的版本库还需要通过 git init 命令来初始化。

  
3.添加文件到版本库中
想要把某个文件管理起来,首先创建一个文件。

  
然后通过 git add 命令添加到版本库中。

  
再去执行 git commit -m '备注' 命令,来提交。

  
commit -m的-m后面跟的是本次操作的备注说明信息。最好是有意义的,也就是下次看到这个说明就清楚提交了什么内容。
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件。

  
4.status和diff命令

  
5.版本回退
5.1 log命令
查看文件的历史版本。

  
简化日志文件的显示方式 --pretty=oneline。

  
5.2 版本回退
回退到上一个版本
git reset --hard HEAD^

    
回退到指定的版本
git reset --hard 版本编号

  
回退到最新版本
一种方式就是可以查看之前记录的最新版本的编号,但是log是看不到最新的日志记录的哦。

  

  
我们还可以借助另一个命令 git reflog 

  
在这个命令中会记录过往的所有的操作,包括版本的切换回退。
  

工作区和暂存区

git add xxx 该命令只能将文件从工作区提交到暂存区。
git commit .... 只能将文件从暂存区提交到版本库中。

     

      

   

撤销管理

1.还未提交到暂存区
git checkout -- fileName

   
2.提交到了暂存区
git reset HEAD file 移除暂存区回到工作区。
git checkout -- fileName 撤销操作。

  
3.已经提交到了版本库中
直接回退到上个版本即可。

  
git reset --hard HEAD^
   

删除管理

操作和添加文件是差不多的,这么理解的话就很容易了~!
工作区:是我们直接编辑的地方,比如Eclipse打开的项目,记事本打开的文件,直接操作。
暂存区:数据暂时存放的区域,是工作区和版本库之间进行数据交流的纽带。
版本库:存放已经提交的数据,push的时候,就是将这个区域中的数据push到远程仓库的。
  

GitHub远程仓库

1.创建SSH Key
ssh-keygen -t ras -C "dengpbs@163.com"

   

   
2.登录GitHub
配置SSH

     

  

    
3.创建远程仓库

  
4.关联远程仓库

   
git remote add origin git@github.com:q279583842q/gp-repository-01.git
  
5.推送文件到远程库中
我们只能将版本库中文件推送到远程库中,推送的命令是
git push -u origin master 第一次推送的时候要加上-u 后面就不用了。

    
推送成功后,我们就可以在远程仓库中看到对应的文件。

  
6.克隆远程仓库
git clone git@github.com:q279583842q/gp_repository_02.git

  

  

分支管理

  
1.创建及合并分支
git branch 查看分支

  
git branch dev1 创建分支

  
git checkout dev1 切换分支

  
git checkout -b dev2 创建分支并且直接切换到分支中。
  
2.分支的操作

  
我们在分支上的相关的操作其实的独立的,我们提交到分支对应的版本库中的情况下,其他分支中是查看不到了,包括主分支,如果我们想要在主分支中查看到对应的信息,我们就需要操作分支合并。
   
首先切换到master分支中然后执行 merge 命令即可。

  
3.删除分支
git branch -d dev1

  
4.解决冲突

  
在合并文件的时候出现了冲突,这时候的解决方案非常简单,直接编辑冲突的文件即可,然后 add commit 操作即可。

  

Bug分支

针对是突发的任务,我们保持当前分支的工作状态,而去处理临时任务,处理完成后又可以继续回落工作。
git stash 存储当前装
git stash list 查看存储的状态列表
git stash apply 恢复之前的状态
  

多人协作

从远处库中更新最新的文件。
git pull 更新同步远处库中的内容
git push origin master 推送文件到远程库中
git push origin dev1 推送到GitHub中的dev1分支中,如果不存在,就会创建dev1分支
git branch --set-upstream-to=origin/dev1 dev1 本地分支和远程库中的分支不一致的情况下可以设置对应关系
  
因此,多人协作的工作模式通常是这样:
1. 首先,可以试图用git push origin 推送自己的修改;
2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3. 如果合并有冲突,则解决冲突,并在本地提交;
4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。
  

标签管理

git里边默认的版本好不容易记。对于一些里程碑版本,需要记下来,此时可以使用标签,给项目的发布版本打标签,也是标签的一个重要功能之一。

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1381672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java多线程:初识多线程!左手画方,右手画圆

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、线程与进程二、创建线程方法1、继承Thread类2、实现Runnable接口3、两者区别4、举个栗子5、简洁写法Ⅰ、Thread匿名内部类写…

vue开发H5 实现滑动图片获取验证码

<template><div><van-button type"primary" click"sendVerification">获取验证码</van-button><van-popupv-model"captchaVisible"closeableposition"bottom"class"login-captcha":close-on-cli…

基于JAVA+SSM框架开发的志愿者服务管理系统设计与实现【附源码】

&#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#x1f4dd; &#x1f680;&#x1f680;&#x1f6…

强化学习(一)简介

强化学习这一概念在历史上来源于行为心理学&#xff0c;来描述生物为了趋利避害而改变自己行为的学习过程。人类学习的过程其实就是为达到某种目的不断地与环境进行互动试错&#xff0c;比如婴儿学习走路。强化学习算法探索了一种从交互中学习的计算方法。 1、强化学习 强化学…

31 树的存储结构一

无法直接用数组表示树的逻辑结构&#xff0c;但是可以设计结构体数组对节点间的关系进行描述&#xff1a;【如表】 这样做的问题&#xff1a; 可以利用 组织链表 parent指针&#xff1a; 注意&#xff1a;树结点在 组织链表 中的位置不代表树的任何逻辑关系 树的架构图&#xf…

DNS 在互联网中的作用是什么?

互联网的运作离不开DNS&#xff0c;那么DNS到底是什么&#xff1f;它在互联网中发挥着怎样的作用呢&#xff1f; DNS&#xff0c;全称为Domain Name System&#xff0c;即域名系统&#xff0c;是互联网的一项基础设施。它负责将人们易于记忆的域名&#xff08;如www.example.…

MySQL 从零开始:06 数据检索

文章目录 1、数据准备2、限制结果3、完全限定名4、排序检索 所谓数据检索&#xff0c;就是前面所讲的”增删改查“的”查“。 注&#xff1a;本文使用的“行”指数据表中的“记录”&#xff0c;“列”指数据表中的“字段”。 在第四节《表的增删改查》中已经介绍了 select 查询…

C# Cad2016二次开发api(三)

直线 Line 属性中文数据类型作用Length长度double直线的长度Angle角度double直线的弧度&#xff0c;0~2πDelta增量Vector3d起点到终点的向量Normal法向向量Vector3d直线所在平面的法向单位向量Thickness厚度doubleEndPoint终点Point3d直线的终点StartPoint起点Point3d直线的起…

Memory Wall in Neural Network Inference

Memory Wall in Neural Network Inference 神经网络推理的瓶颈在于访存带宽&#xff0c;通常无法发挥出加速器的全部算力。本文总结了目前常用的推理加速器及其设计&#xff0c;并分析了常用神经网络的访存瓶颈。文章大部分内容参考自Computer Architecture: A Quantitative A…

JavaScript基础(26)_dom增删改练习

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>DOM增删改练习</title><link rel"stylesheet" href"../browser_default_style/reset.css"><style>table {borde…

软件测试|Selenium StaleElementException异常的原因与方法

简介 在使用Selenium进行Web自动化测试时&#xff0c;我们可能会遇到StaleElementException异常。这个异常通常在我们操作一个之前已经找到的元素时抛出&#xff0c;但该元素已经不再处于DOM树中&#xff0c;导致元素过时&#xff08;stale&#xff09;。本文将介绍StaleEleme…

C++11 左右值引用、移动语义

右值引用和移动语义 什么是左值&#xff1f;什么是左值引用&#xff1f; 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff0c;我们可以获取它的地址可以对它赋值&#xff0c;左值可以出现赋值符号的左边&#xff0c;右值不能出现在赋值符号左边。定义时const修饰…

SpringSecurity入门demo(二)表单认证

上一篇博客集成 Spring Security&#xff0c;使用其默认生效的 HTTP 基本认证保护 URL 资源&#xff0c;下面使用表单认证来保护 URL 资源。 一、默认表单认证&#xff1a; 代码改动&#xff1a;自定义WebSecurityConfig配置类 package com.security.demo.config; import or…

基于python的基金分析可视化系统

项目背景&#xff1a; 随着金融市场的发展和人们对财富管理的重视&#xff0c;越来越多的人开始参与基金投资。然而&#xff0c;由于市场上基金产品众多且复杂&#xff0c;投资者往往难以快速准确地获取基金信息和进行分析&#xff0c;从而导致投资决策不够科学和有效。为了解决…

PyCharm安装使用教程2024

简介 PyCharm是一种PythonIDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单…

三棋先手必胜证明

目录 创作原因 游戏规则 初始状态图 证明过程 先手必胜的证明 失败的博弈树&#xff08;三个多小时的成果&#xff09; 创作原因 这个棋不是网上流行的成三棋&#xff0c;我也不知道这个棋叫什么。由于这个棋是&#xff08;横竖斜&#xff09;连成三个就获胜&#xff0c;…

Vulnhub-HACKSUDO: PROXIMACENTAURI渗透

文章目录 一、前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、端口敲门三、web密码爆破四、getShell五、获取新用户六、提权 一、前言 由于在做靶机的时候&#xff0c;涉及到的渗透思路是非常的广泛&#xff0c;所以在写文章的时候都是挑重点来写&#xff0…

【同济子豪兄斯坦福CS224W中文精讲】NetworkX代码学习笔记

文章目录 安装配置创建图可视化图图数据挖掘参考资料 安装配置 matplotlib中文字体设置 import networkx as nx import matplotlib.pyplot as plt # 魔法指令&#xff0c;设置后在jupyter notebook中绘制的图形会显示在输出单元格中&#xff0c;而不是弹出一个新窗口 %matplo…

ssm基于Javaweb的网上奶茶店系统的设计与实现论文

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

爬虫之牛刀小试(四):爬取B站番剧的简介

今天爬取的是b站。 如何爬取b站中的番剧呢&#xff1f; 首先我们来到番剧索引中&#xff0c;随便点开一部动漫&#xff0c;检查代码。 每个作品对应一个链接: https://www.bilibili.com/bangumi/play/ss…&#xff08;ss后面的数字称为ss号&#xff09; 发现关于动漫的信息…