Git新手?这篇文章带你飞!基础操作一网打尽!

推荐阅读

智能化校园:深入探讨云端管理系统设计与实现(一)
智能化校园:深入探讨云端管理系统设计与实现(二)


文章目录

  • 推荐阅读
  • Git
    • 初识Git
      • 啥是版本控制系统??
      • 集中式VS分布式
    • git使用
      • Git安装
      • Git的使用命令
    • idea链接gitee


Git

初识Git

Git(读音为/gɪt/) 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
git是世界上最先进的分布式版本控制系统(没有之一)。

啥是版本控制系统??

例如:
一个项目,我们开发了第一版、第二版、第三版、一定不改版、一定一定不改版、最终版、终极不再改动再改就砸电脑版,最终敲定的方案是第一版。这种情况下,改到最后已经看不出当初的模样了。所以,我们需要将每一次的修改记录并保存下来,以便于为后面的版本溯源。
而这时,有一个软件可以帮你自动记录每个文件的改动,还可以让同事一起参与协作编辑,这样自己就不用将每一次改动前的版本手动保存,也不再需要将改动后的文件传来传去,每一次需要就去软件中看就行了。
而git就可以很好的解决以上问题。

版本控制系统是软件开发必备的代码管理工具,主要用于解决以下四个方面的问题:

  1. 代码备份
  2. 版本控制
  3. 协同开发
  4. 责任追溯

集中式VS分布式

集中式版本控制系统(代表:SVN),版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
在这里插入图片描述
分布式版本控制系统(代表:Git)
分布式版本控制系统没有“中央服务器”每个人的电脑上都是一个完整的版本库,这样,我们工作的时候,就不需要联网了,因为版本库就在自己的电脑上。那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
在这里插入图片描述

集中式和分布式的区别是:

你的本地是否有完整的版本库历史!

假设SVN服务器没了,那你丢掉了所有历史信息,因为你的本地只有当前版本以及部分历史信息。
假设GitHub服务器没了,你不会丢掉任何git历史信息,因为你的本地有完整的版本库信息。你可以把本地的git库重新上传到另外的git服务商。

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

git使用

Git安装

从Git官网下载,根据不同操作系统去进行相应的下载。(此处以Windows为例)

在这里插入图片描述
安装成功后,相应的文件夹下会是这样的。
在这里插入图片描述
鼠标右键也可以
在这里插入图片描述
然后点击bash.exe,就会弹出一个命令窗口的东西,即git安装成功了。

Git的使用命令

1.git 环境配置(第一次使用时是要配置的)
用户名,邮箱

$ git config --global user.name "Your Name"//这里写的是你自己的用户名和邮箱哈
$ git config --global user.email "email@example.com"

2.创建版本库
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
创建版本库命令

$ mkdir test(加文件名)//创建
$ cd test//使用
$ pwd//查看当前目录
$ git init//初始化,生成.git文件(若该文件隐藏,则使用ls -ah)

注意:必须在当前版本库和当前目录下

删除文件

$ rm test.txt
//直接删除
$ git checkout -- test.txt//删错了,恢复(撤销修改)

3.将文件添加到缓存区去,并将文件提交仓库中。

$ git add test.txt//添加
$ git commit -m "test.txt 文件提交"//提交
$ git status //查看是否还有文件未提交(查看文件的状态)
$ git diff test.txt//(查看文件修改了啥内容)
$ cat test.txt//查看文件内容

4.版本控制
查看历史记录

$ git log//查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline//简洁查看

版本回退

$ git reset --hard HEAD^ //回退一个版本
$ git reset --hard  //回退前两个版本,一次类推
$ git reset --hard HEAD HEAD~100 //回退到前100个版本
$ git reset --hard  版本号//回到最新的版本
$ git reflog//查看每一次修改历史,查看了版本号之后,在进行恢复

撤销修改

$ git checkout -- test.txt//丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt//丢弃暂存区的修改(若已提交,则回退)

远程仓库
1.初次创建Gitee(github)账号,需要先进行SSH公钥设置,因为本地git仓库和Gitee仓库之间的传输是通过SSH加密的。

$ ssh-keygen -t rsa -C "youremail@example.com"//填写你自己的邮箱,创建SSH Key

2.登录Gitee 点击我的设置中安全设置的SSH公钥,将你生成的黏贴到此处,并添加它。
在这里插入图片描述
3.创建一个新的仓库

$ git remote add origin 网址//关联

网址即那个路径
在这里插入图片描述

$ git push -u origin master//将本地内容推送到远程仓库(第一次提交)(第一次应该还要输入一次Gitee账号密码)
$ git push origin master//将本地内容推送到远程仓库(之后体交)
$ git remote -v        //查看远程仓库信息
$ git remote rm origin//删除远程仓库(解绑)

4.克隆一个本地仓库

$ git clone 网址//克隆远程仓库
$ ls//查看
$ git remote//查看远程库的信息
$ git remote -v//查看远程库的详细信息

在这里插入图片描述
5.协作开发
1.创建分支和合并分支

$ git checkout -b dev//创建并切换到分支dev
$ git branch dev//创建dev
$ git checkout dev//切换dev$ git branch//查看当前分支
$ git branch -d dev//删除dev分支$ git merge dev//(合并到master 分支上)
$ git merge -no -ff -m"注释" dev //(注释dev分支上)
-no -ff//用来禁用Fast forword模式

若在工作中突然遇到了bug ,工作还未完成,这时可以先将工作现场藏起来,恢复后在继续工作。

$ git stash//将现场储藏起来
$ git stash list//查看储存的工作现场$ git stash apply //恢复
$ git stash drop//删除
$ git stash pop//恢复并删除

2.推送分支

$ git push origin master(dev)//推送分支
$ git checkout -b dev origin/dev//创建远程origin的dev分支到本地A推送的和B推送的产生了冲突
$ git pull//抓取分支(解决冲突)
$ git branch --set-upstream-to=dev(master) dev//指定本地与远程dev的链接
$ git rebase//把本地未push的分叉提交历史整理成直线

其他可能会用到的命令操作

$ git config --global alias.last 'log -1'//显示最后一次提交信息
$ git last//显示最近一次的提交
$ cat .git/config //查看每个仓库的git配置文件
$ cat .gitconfig  //查看当前用户的git配置文件
$ git config --global color.ui true//让git显示颜色

更多命令自行去搜吧,需要啥查啥,点子搭积木吧。

idea链接gitee

附上idea 链接 gitee,(github操作其实也类似)
打开设置,找到插件,下载Gitee并应用即可。
在这里插入图片描述
点击gitee ,点击加号,登录即可。看到账号即链接成功。

在这里插入图片描述
回到主页面,打开终端。正常输入git命令即可。
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

88.乐理基础-记号篇-反复记号(二)D.C.、D.S.、Fine、Coda

内容参考于:三分钟音乐社 上一个内容:87.乐理基础-记号篇-反复记号(一)反复、跳房子-CSDN博客 下图红色左括号框起来的东西,它们都相对比较抽象一点,这几个词都是意大利语 首先D.C.这个标记,然…

基于DNA的密码学和隐写术综述

摘要 本文全面调研了不同的脱氧核糖核酸(DNA)-基于密码学和隐写术技术。基于DNA的密码学是一个新兴领域,利用DNA分子的大规模并行性和巨大的存储容量来编码和解码信息。近年来,由于其相对传统密码学方法的潜在优势,如高存储容量、低错误率和对环境因素的抗性,该领域引起…

.NET core 中的Kestrel 服务器

什么是Kestrel? Kestrel 是一个跨平台的Web服务器,会默认在ASP.NET Core 项目模板中对其进行配置。未使用 IIS 托管时,ASP.NET Core 项目模板默认使用 Kestrel。 Kestrel 的功能包括: 跨平台:Kestrel 是可在 Window…

蓝桥杯基础知识3 memset()

蓝桥杯基础知识3 memset() #include <bits/stdc.h> using namespace std;int main(){int a[5]; //随机数for(int i 0;i < 5; i)cout << a[i] << \n;cout << \n;memset(a, 0, sizeof a); //0for(int i 0;i < 5; i)cout << a[i] << …

最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书

前提&#xff1a;朋友弄了一个培训机构&#xff0c;培训考试合格后&#xff0c;给发证书&#xff0c;需要一个证书查询系统。委托我给弄一个&#xff0c;花了几个晚上给写的证书查询系统。 实现功能&#xff1a; 前端按照姓名手机号码进行证书查询证书信息展示证书展示&#x…

kotlin运行

1.使用android studio 由于我本身是做android的&#xff0c;android studio本身有内置kotlin的插件。但若只是想跑kotlin的程序&#xff0c;并不像和android程序绑在一起&#xff0c;可以创建一个kt文件&#xff0c;在里面写一个main函数&#xff0c;就可以直接运行kotlin程序…

2024.1.13每日一题

LeetCode 2182.构造限制重复的字符串 2182. 构造限制重复的字符串 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个字符串 s 和一个整数 repeatLimit &#xff0c;用 s 中的字符构造一个新字符串 repeatLimitedString &#xff0c;使任何字母 连续 出现的次数都…

[足式机器人]Part2 Dr. CAN学习笔记 - Ch02动态系统建模与分析

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - Ch02动态系统建模与分析 1. 课程介绍2. 电路系统建模、基尔霍夫定律3. 流体系统建模4. 拉普拉斯变换&#xff08;Laplace&#xff09;传递函数、微分方程4.1 Laplace Transform 拉式变换4.2 收…

【python】07.字符串和常用数据结构

字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生&#xff0c;最初计算机被应用于导弹弹道的计算&#xff0c;而在计算机诞生后的很多年时间里&#xff0c;计算机处理的信息基本上都是数值型的信息。世界上的第一台电子计算机叫ENIAC&#xff08;电…

Vue+ElementUI+Axios实现携带参数的文件上传(数据校验+进度条)

VueElementUIAxios实现携带参数的文件上传&#xff08;数据校验进度条&#xff09; 可以实现对上传文件的类型&#xff0c;大小进行数据校验&#xff0c;以及对上传文件所要携带的数据也进行的校验&#xff0c;也有文件上传进度的进度条。 一、Vue 结构部分 弹窗显示&#xff0…

Java 面试题 - 多线程并发篇

线程基础 创建线程有几种方式 继承Thread类 可以创建一个继承自Thread类的子类&#xff0c;并重写其run()方法来定义线程的行为。然后可以通过创建该子类的实例来启动线程。 示例代码&#xff1a; class MyThread extends Thread {public void run() {// 定义线程的行为} …

ubuntu20.04网络问题以及解决方案

1.网络图标消失&#xff0c;wired消失&#xff0c;ens33消失 参考&#xff1a;https://blog.51cto.com/u_204222/2465609 https://blog.csdn.net/qq_42265170/article/details/123640669 原始是在虚拟机中切换网络连接方式&#xff08;桥接和NAT&#xff09;&#xff0c; 解决…

K8S--安装MySQL8(单机)

原文网址&#xff1a;K8S--安装MySQL8&#xff08;单机&#xff09;-CSDN博客 简介 本文介绍K8S部署MySQL8&#xff08;单机&#xff09;的方法。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题…

解决虚拟机的网络图标不见之问题

在WIN11中&#xff0c;启动虚拟机后&#xff0c;发现网络图标不见了&#xff0c;见下图&#xff1a; 1、打开虚拟机终端 输入“sudo server network-manager stop”&#xff0c;停止网络管理器 输入“cd /回车” &#xff0c; 切换到根目录 输入“cd var回车” &#xff0c;…

探索Shadowsocks-Android:保护你的网络隐私

探索Shadowsocks-Android&#xff1a;保护你的网络隐私 I. 引言 在数字时代&#xff0c;网络隐私和安全变得愈发重要。我们越来越依赖互联网&#xff0c;但同时也面临着各种网络限制和监控。在这个背景下&#xff0c;Shadowsocks-Android应用程序应运而生&#xff0c;为用户提…

java Servlet体育馆运营管理系统myeclipse开发mysql数据库网页mvc模式java编程计算机网页设计

一、源码特点 JSP 体育馆运营管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用serlvetdaobean&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…

自定义数据实现SA3D

SA3D&#xff1a;Segment Anything in 3D with NeRFs 实现了3D目标分割 原理是利用SAM(segment anything) 模型和Nerf分割渲染3D目标&#xff0c; SAM只能分块&#xff0c;是没有语义标签的&#xff0c;如何做到语义连续&#xff1f; SA3D中用了self-prompt, 根据前一帧的mask…

【Java】正则表达式( Pattern 和 Matcher 类)

快速入门 Java 提供了 java.util.regex 包&#xff0c;它包含了 Pattern 和 Matcher 类&#xff0c;用于处理正则表达式的匹配操作。 java.util.regex 包主要包括以下三个类&#xff1a; Pattern 类&#xff1a; pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共…

书生·浦语大模型--第二节课笔记

书生浦语大模型--第二节课 大模型及InternLM基本介绍实战部分demo部署准备工作模型下载代码准备终端运行web demo 运行 Lagent 智能体工具调用 Demo准备工作Demo 运行 浦语灵笔图文理解创作 Demo环境准备下载模型下载代码运行 大模型及InternLM基本介绍 大模型 定义&#xff…

C语言快速排序——qsort函数

上面的是我们标准C语言库里面对qsort函数的介绍&#xff0c;我们先来从排序说起&#xff1a; 这就不得不提出编程中最最基础的排序算法---冒泡排序 对于一个任意的无序数列&#xff0c;我们如果想要把他排成顺序数列的话&#xff0c;我们就可以让每一项跟后面的一项去比较&…