Git保姆级使用教程,超详细,带你了解常用Git命令!-程序员宅基地

技术标签: github  git  

1. 前言

1.1 什么是Git

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
在IDEA开发工具中可以集成Git:
在这里插入图片描述
集成后在IDEA中可以看到Git相关图标:
在这里插入图片描述

1.2 使用Git能做些什么?

代码回溯:Git在管理文件过程中会记录日志,方便回退到历史版本
版本切换:Git存在分支的概念,一个项目可以有多个分支(版本),可以任意切换
多人协作:Git支持多人协作,即一个团队共同开发一个项目,每个团队成员负责一部分代码,通过Git就可以管理和协调
远程备份:Git通过仓库管理文件,在Git中存在远程仓库,如果本地文件丢失还可以从远程仓库获取

1.3 git常用命令汇总

git status 查看文件状态
git add 文件名称 将文件的修改加入暂存区
①git reset 文件名 将暂存区的文件取消暂存
②git reset --hard “版本号” 将暂存区的文件切换到指定版本
git commit -m “备注信息” 文件名 将暂存区的文件修改提交到版本库
git log 查看日志
git remote 查看远程仓库
git remote add 远程仓库简称 远程仓库地址 把本地仓库添加到远程
git clone “远程仓库地址” 从远程仓库克隆
git push 远程仓库简称 分支名称 将分支推送到远程
git pull 从远程仓库拉取
git branch 列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
git checkout 分支名称 切换分支
git merge 分支名称 将两个分支文件进行合并
git tag 查看标签
git tag 标签名称 创建标签
git push origin 分支名称 将标签推送到远程仓库
git checkout -b 分支名 标签名 检出标签

2. Git概述

2.1 Git简介

Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git仓库分为两种:

  • 本地仓库:开发人员自己电脑上的 Git 仓库
  • 远程仓库:远程服务器上的 Git 仓库
    在这里插入图片描述
    解释说明:
    commit:提交,将本地文件和版本信息保存到本地仓库
    push:推送,将本地仓库文件和版本信息上传到远程仓库
    pull:拉取,将远程仓库文件和版本信息下载到本地仓库

2.2 Git下载与安装

git下载地址:https://git-scm.com/download
在这里插入图片描述
下载完成之后会有一个.exe文件,双击运行,傻瓜式(一直点击下一步)安装即可!
安装完成后可以在任意目录下点击鼠标右键,如果能够看到如下菜单则说明安装成功:
在这里插入图片描述
Git GUI Here:打开Git 图形界面
在这里插入图片描述
Git Bash Here:打开Git 命令行
在这里插入图片描述
Git安装目录结构如下:
在这里插入图片描述

3. Git代码托管服务

3.1 常用的Git代码托管服务

Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?
我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

名称 网址 说明
gitHub gitHub 一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
码云 https://gitee.com/ 国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
GitLab https://about.gitlab.com/ 一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
BitBucket https://bitbucket.org/ 一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户

3.2 码云代码托管服务

码云网址:https://gitee.com/

在这里插入图片描述

3.2.1 注册码云账号

注册网址: https://gitee.com/signup

在这里插入图片描述

3.2.2 登录码云

注册完成后可以使用刚刚注册的邮箱进行登录( https://gitee.com/login )
在这里插入图片描述

3.2.3 创建远程仓库

在这里插入图片描述
在这里插入图片描述
注意:每个Git远程仓库都会对应一个网络地址,点击【克隆/下载】按钮,在弹出窗口点击
在这里插入图片描述
3.2.4 邀请其他用户成为仓库成员
前面已经在码云上创建了自己的远程仓库,目前仓库成员只有自己一个人(身份为管理员)。在企业实际开发中,一个项目往往是由多个人共同开发完成的,为了使多个参与者都有权限操作远程仓库,就需要邀请其他项目参与者成为当前仓库的成员。
点击管理按钮进入仓库管理页面,左侧菜单中可以看到【仓库成员管理】:
在这里插入图片描述
点击【添加仓库成员】菜单下的【邀请用户】菜单,跳转到如下页面,可以看到邀请用户有多种方式:链接邀请、直接添加、通过仓库邀请成员。
在这里插入图片描述

4. Git常用命令

4.1 Git全局设置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。在Git 命令行中执行下面命令:
设置用户信息

git config --global user.name "victy"
git config --global user.email "study.zilv"

查看配置信息

 git config --list

在这里插入图片描述
注意:上面设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,此处可以任意设置。

4.2 获取Git仓库

要使用Git对我们的代码进行管理,首先需要获得Git仓库。
获取Git仓库通常有两种方式:
在本地初始化Git仓库(不常用)
从远程仓库克隆(常用)

4.2.1 在本地初始化仓库

操作步骤如下:
在任意目录下创建一个空目录(例如gitTest)作为我们的本地Git仓库
进入这个目录中,点击右键打开Git bash窗口
执行命令

git init

如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
初始文件目录:
在这里插入图片描述
执行git init命令之后的文件目录:
在这里插入图片描述

4.2.2 从远程仓库克隆

可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令格式:git clone 远程仓库地址
在这里插入图片描述
此时仓库文件状态:
在这里插入图片描述

4.3 工作区、暂存区、版本库

为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到。
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
在这里插入图片描述

4.4 Git工作区中文件的状态

Git工作区中的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制):文件是新创建的,git没有去管理它
tracked 已跟踪(被纳入版本控制)
(1)Unmodified 未修改状态
(2)Modified 已修改状态
(3)Staged 已暂存状态

注意:文件的状态会随着我们执行Git的命令发生变化

4.5 本地仓库操作

4.5.1 git status

此时远程克隆仓库的文件状态(我们新建了user.java与user.xml文件):
在这里插入图片描述查看文件状态
在这里插入图片描述

4.5.2 git add

git add 命令的作用是将文件的修改加入暂存区。
命令格式:git add fileName
加入暂存区后再执行 git status 命令,可以发现文件的状态已经发生变化。
执行add命令后查看状态:

在这里插入图片描述

4.5.3 git reset(将文件取消暂存)

git reset 命令的作用是将暂存区的文件取消暂存或者是切换到指定版本
取消暂存命令格式:git reset 文件名
在这里插入图片描述
切换到指定版本命令格式:git reset --hard 版本号

4.5.4 git commit

git commit 命令的作用是将暂存区的文件修改提交到版本库
命令格式:git commit -m “备注信息” 文件名
提交了user.java文件之后,就只剩下了一个未暂存的user.xml
在这里插入图片描述
解释说明:

-m:代表message,每次提交时需要设置,会记录到日志中
也可以使用通配符*一次提交多个文件

4.5.5 git log

在这里插入图片描述
通过git log命令查看日志,可以发现每次提交都会产生一个版本号,提交时设置的message、提交人、邮箱、提交时间等信息都会记录到日志中

4.5.6 git reset(切换到指定版本)

我们在user.java中添加以下内容,并保存。

public static void main(String[] args) {
    
    System.out.println("我一定能学好Git!!");
}

此时文件状态改变:
在这里插入图片描述
此时我们再把修改过后的user.java文件提交(此时):
在这里插入图片描述
我们查看提交日志,会有两个版本号:
在这里插入图片描述现在我们要做的就是把user.java文件切换到第一次提交时候的版本:
在这里插入图片描述
此时你再打开user.java文件,就会发现我们刚才添加进去的内容就消失了!
如果切换至第二次提交的版本号,执行reset命令后我们就会发现,刚才添加到user.java进去的内容就又回来了
在这里插入图片描述

4.6 远程仓库操作

4.6.1 git remote

如果要查看已经配置的远程仓库服务器,可以执行 git remote 命令,它会列出每一个远程服务器的简称。
如果已经克隆了远程仓库, 至少能够看到origin,这是Git克隆的仓库服务器的默认名字。
在这里插入图片描述

解释说明:
可以通过-v参数查看远程仓库更加详细的信息
本地仓库配置的远程仓库都需要一个简称,后续在和远程仓库交互时会使用这个简称

4.6.2 git remote add

添加远程仓库命令格式:git remote add 简称 远程仓库地址
把本地仓库添加到远程,远程仓库的默认名称为origin

在这里插入图片描述

一个本地仓库关联多个远程仓库

4.6.3 git clone

在前面我们已经测试过此命令了,可以复习一遍!

4.6.4 git push

将本地仓库内容推送到远程仓库。
命令格式:git push 远程仓库简称 分支名称

在这里插入图片描述
此时我们就可以在码云看到我们所提交上去的user.java文件
在这里插入图片描述

4.6.5 git pull

git pull 命令的作用是从远程仓库获取最新版本并合并到本地仓库
命令格式:git pull 远程仓库简称 分支名称
在本地初始化一个新的repo仓库,并在此仓库中创建new.java文件。然后把此仓库添加到远程仓库(远程仓库依然是我们上文中用到的ceshi仓库)。
文件目录如下:
在这里插入图片描述
从远程仓库拉取代码

在这里插入图片描述
此时我们就会发现本地仓库多了user.java文件
在这里插入图片描述

PS:如果当前本地仓库不是从远程仓库克隆,而是本地创建(通过 git init)的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令最后加入参数–allow-unrelated-histories
(我测试时并没有出现这个错误,又出现这个错误的小伙伴可以参考一下!)

4.7 分支操作

分支是Git 使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
本地仓库和远程仓库中都有分支,同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过git init 命令创建本地仓库时默认会创建一个master分支。

4.7.1 查看分支

查看分支命令:git branch
git branch 列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
此时再回到我们的ceshi文件夹(也就是从远程拉取下来的ceshi仓库)
在这里插入图片描述

4.7.2 创建分支

创建分支命令格式:git branch 分支名称
在这里插入图片描述

4.7.3 切换分支

一个仓库中可以有多个分支。
切换分支命令格式:git checkout 分支名称
在这里插入图片描述

4.7.4 推送至远程仓库分支

推送至远程仓库分支命令格式:git checkout 分支名称
在这里插入图片描述

4.7.5 合并分支

合并分支就是将两个分支的文件进行合并处理。
令格式:git merge 分支名称
此时我们把user.java中的文件修改为(此时我们已经切换到b1分支)并把b1分支提交推送至远程仓库:

public static void main(String[] args) {
    
    System.out.println("我一定能学好Git!!");
    System.out.println("我一定能学好Git!!");
}

此时远程仓库b1分支下user.java的内容为:

在这里插入图片描述
此时b1分支与master分支中user.java的内容完全不同的。
此时我们要做的就是把b1合并到master:
我们切换到master分支
在这里插入图片描述

注意:分支合并时需注意合并的方向,如上图所示,在Master分支执行操作,结果就是将b1分支合并到Master分支
此时我们就会发现master分支下的user.java文件内容也为:

public static void main(String[] args) {
    
    System.out.println("我一定能学好Git!!");
    System.out.println("我一定能学好Git!!");
}

如果在合并的时候出现冲突,我们就打开本地文件进行冲突处理,处理完成之后把改文件添加到本地仓库,使用git commit -m “” user.java -i 命令就能推送成功单个文件

4.8 标签操作

Git 中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。

4.8.1 查看标签

查看标签命令:git tag
在这里插入图片描述

4.8.2 创建标签

命令格式: git tag 标签名称
在这里插入图片描述

4.8.3 将标签推送到远程仓库

命令格式:git push origin 分支名称
在这里插入图片描述
此时我们就会发现我们的远程仓库多出了一个标签
在这里插入图片描述

4.8.4 检出标签

检出标签时需要新建一个分支来指向某个标签,
检出标签的命令格式:git checkout -b 分支名 标签名
标签完成之后,就不会再修改了

检出标签就是在这个标签的基础上进行其他的开发或操作。
检出标签的操作实质 : 就是以标签指定的版本为基础版本,新建一个分支,继续其他的操作。因此 ,就是新建分支的操作了。
在这里插入图片描述
最新笔记链接:https://note.youdao.com/s/F160OmgT

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45432729/article/details/130538866

智能推荐

微信小程序底部tabbar自定义带弧度效果完整版案例_微信小程序定制底部菜单怎么做 中间是一个弧形-程序员宅基地

文章浏览阅读2.4k次。这是运行的效果:新建components组件文件夹,里面新建tabbarComponent文件夹,结构如下:tabbar.js代码:// tabBarComponent/tabBar.jsconst app = getApp();Component({ /** * 组件的属性列表 */ properties: { tabbar: { type: Object, value: { "backgroundColor": "#f_微信小程序定制底部菜单怎么做 中间是一个弧形

centos下的vim安装_centos. vim. setnu-程序员宅基地

文章浏览阅读3.3w次,点赞4次,收藏12次。一 . 大家的都知道Linux下是自带vi ,那么我们如何对vi使用呢?在centos下打开terminal,通过 touch aa.txt //新建一个名称为aa的文本文件。2. 用vi打开该文本 vi aa.txt3. 对文本进行操作,常用操作自行查找二. centos下安装vim,因为vi的功能没有vim丰富用yum查找源中的VIM包,不知安装哪个合适。yum search_centos. vim. setnu

文件系统缓存中两个重要参数: dirty_ratio与dirty_background_ratio-程序员宅基地

文章浏览阅读7.3k次,点赞4次,收藏11次。这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_ration以及/proc/sys/vm/dirty_ratio两个参数的大小来实现。看了不少相关博文的介绍,不过一直弄不清楚这两个参数的区别在哪里,后来看了下面的一篇英文博客才大致了解了它们的不同。v..._dirty_background_ratio

iOS多线程编程指南(一)关于多线程编程-程序员宅基地

文章浏览阅读342次。第一章 关于多线程编程多年来,计算机的最大性能主要受限于它的中心微处理器的速度。然而由于个别处理器已经开始达到它的瓶颈限制,芯片制造商开始转向多核设计,让计算机具有了同时执行多个任务的能力。尽管Mac OS X利用了这些核心优势,在任何时候可以执行系统相关的任务,但自己的应用程序也可以通过多线程方法利用这些优势。1.1 什么是多线程多线程是一个比较轻

解秘Node.js高并发原理,以及串联同步执行并发请求的方案_nodejs单线程处理高并发-程序员宅基地

文章浏览阅读1k次。如果是 I/O 任务,就从 线程池 中拿出一个线程来处理这个事件,并指定回调函数,当线程中的 I/O 任务完成以后,就执行指定的回调函数,并把这个完成的事件放到事件队列的尾部,线程归还给线程池,等待事件循环。就像上面说的:Node.js 在主线程里维护了一个"事件队列"(Event queue),当用户的网络请求或者其它的异步操作到来时,Node 都会把它放到 Event Queue之中,此时并不会立即执行它,代码也不会被阻塞,继续往下走,直到主线程代码执行完毕。如果是单线程,他是如何处理高并发请求的?_nodejs单线程处理高并发

MyBatis的返回参数类型_mybatis返回bigdecimal-程序员宅基地

文章浏览阅读9.5w次,点赞5次,收藏35次。MyBatis的返回参数类型分两种1. 对应的分类为:1.1. resultMap :1.2. resultType :2 . 对应返回值类型:2.1. resultMap : 结果集[对象等]2.2. resultType : Integer,String ,Long ,class3. 注意点:在MyBatis进行查询映射时,其实查询出来的每一个属性_mybatis返回bigdecimal

随便推点

warning: multi-character character constant-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏10次。warning: multi-character character constant 2011-05-14 16:33:57| 分类: C/C++|举报|字号 订阅 Dev-C++提示以上错误,经查是char类型字符只能存放一个单字符的原因,错误代码如下:'. '这个点符号后面跟了个空格,编译的时候会提示警告,但仍编译成功。运行的时候_warning: multi-character character constant

C++的n叉树族谱详细信息管理系统(可以查到谁是老师)_c++族谱总结-程序员宅基地

文章浏览阅读976次,点赞5次,收藏23次。#include <stdio.h>#include <stdlib.h>#include <string.h>int MATEFLAG=0;//配偶typedef struct TreeNode{ int Num; //记录这个人拥有几个儿女 char Name[20]; //记录这个人的姓名 char Kind; //标._c++族谱总结

树莓派Pico迷你开发板扩展按键接口的方法及MicroPython编程_pico按钮原理图-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏8次。本文介绍利用一块树莓派Pico开发板、一块面包板、两个按键、1个LED发光二极管和7跟导线等少量元器件实现树莓派Pico扩展按键接口的方法,并给出所对应按键接口的MicroPython编程示例。一、树莓派Pico扩展按键接口的方法运用树莓派Pico开发板扩展按键的方法有两种。1、使用Pico开发板RP2040 MCU片内上拉电阻扩展按键接口Pico开发板主芯片采用的是树莓派基金会自研的MCU芯片,其型号是RP2040。使用Pico开发板RP2040 MCU片内上拉电阻扩展按键接口方法原理图见图1所示_pico按钮原理图

Android 4.0使用Kotlin调用C语言以及汇编语言-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏8次。如今,Google早已将Kotlin编程语言作为了头等语言(first-class programming language)用于Android开发中,并且在Android Studio中获得了非常全面的支持。与此同时,我们看到Google从Android Studio 3.0开始就已经支持了Java 8,过了这么多年仍然不对Java语言进行升级就能看到Google当前对Java已经持有相当冷淡的态度了,预计Java 8将是Android Studio最高能支持的Java版本了(*^_^*)。或许这跟Ora_kotlin调用c语言

Burp常见问题-程序员宅基地

文章浏览阅读753次,点赞20次,收藏23次。本文举例了几个常见的软件工具使用问题,文末会提供一些我自己整理和使用的工具资料。"在追逐零 Bug 的路上,我们不断学习、改进,更加坚定自己的技术信念。让我们相信,每一个 Bug 都是我们成长的机会。更多有关于VMware、Burp、Xshell、kali的问题可以关注博主后,在私信处拿链接,以后工具故障看这个就行给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。

SparkStreaming教程_sparkstreaming读取file文件java-程序员宅基地

文章浏览阅读334次。概要Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处理过的数据可以被推送到文件系统,数据库和HDFS。imag..._sparkstreaming读取file文件java

推荐文章

热门文章

相关标签