【tips】Git使用指南

news2025/10/29 3:44:47

文章目录

  • 一、Git介绍
    • 1. 什么是Git
    • 2.Git对比SVN
    • 3.Git安装
  • 二.Git常用命令
    • 1. git config
    • 2. 初始化本地库
    • 3. 工作区、暂存区和版本库
    • 4. git add
    • 5. git commit
    • 6. git reset 与 git revert
      • git reset
      • git revert
  • 三. Git 分支
    • 1.初识分支
    • 2.创建分支
    • 3.切换分支
    • 4.合并分支
    • 5.删除分支
  • 四.远程仓库
    • 1.创建远程仓库
    • 2.添加仓库地址
    • 3.git push
    • 4.git clone
    • 5.git pull
  • 五.VScode集成Git
  • 六. gitignore

一、Git介绍

1. 什么是Git

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

  • 版本控制

    版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

  • 团队协作

    从单兵作战转换为团队开发

2.Git对比SVN

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己的代码推送到中央服务器,集中式版本控制系统是必须联网才能工作

  • Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己电脑上,可以离线工作

3.Git安装

git官网下载

打开 cmd 窗口,输入指令检查是否安装成功

git --version

 

二.Git常用命令

1. git config

Git 中有三层 config 文件,分别为系统、全局、本地,对于同一配置项,优先级为本地 > 全局 > 系统,每层配置都会覆盖掉上一层的配置

查看不同级别配置文件

# 查看系统config  \Git\mingw64\etc\gitconfig包含适用于系统所有用户和所有项目的值
git config --system --list
  
# 查看当前用户(global)配置  C:\Users\Administrator.gitconfig
git config --global  --list
 
# 查看当前仓库配置信息  git项目目录中的.git/config,适用于当前项目
git config --local  --list

设置用户标识,以区分不同的开发人员,可以和远程不同

# 设置全局配置 --global
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

# 设置本地用户标识
git config user.email "you@example.com"
git config user.name "Your Name"

# 删除配置项
git config [--local|--global|--system] --unset section.key

# 查看当前配置
git config --list

# 查看某个配置项
git config user.name

2. 初始化本地库

cd hello/是进入文件夹,cd ..是返回上一级文件夹,ls显示当前文件夹下的普通文件,ls -a显示所有

git init

初始化后文件夹内会多一个 .git 的文件夹(这个文件夹是一个隐藏文件夹)

3. 工作区、暂存区和版本库

工作区

当前目录下的所有文件,.git不属于工作区

版本库

.git这个目录是本地版本库(本地仓库),分为暂存区和main

托管平台

  • 局域网(内网):gitlab
  • 公网(外网):gitlab、github、gitee 码云

将工作区的代码提交至暂存区(stage),确定没有问题后提交到主分支 main ,即历史区,这时才会生成提交记录

如果需要再次提交,可以将之前 main 中的提交撤回到暂存区,在暂存区中一次性提交至 main 中,总共生成一次记录,避免记录混乱

最后推送远程仓库

4. git add

使用 git add 指令将代码提交至暂存区

# 把文件夹下的单独文件 index.txt 放在暂存区
git add index.txt
# 把文件夹下的单独一个文件夹 assets 放在暂存区
git add assets/
# 把文件夹下所有的内容都放在暂存区
git add --all
# git add --all 简单的写法
git add .

# 查看文件状态(绿色的表示在暂存区,红色的表示只在工作区)
git status

# 查看文件内容
cat index.txt

# 删除暂存区的文件
git rm --cached index.txt

5. git commit

使用git commit指令将暂存区的内容提交至历史区(版本库)

# 将暂存区的内容放到历史区(版本库),不加-m会进入vim模式,按i切换到insert模式,写注释(不要在#后面写,另起一行),然后按esc键,按:wq退出
git commit -m "message"

# 跳过 git add, 将所有已被跟踪的文件更改提交到版本库
git commit -am "message"

# 使用一次新的commit, 替代上一次提交,如果代码没有任何新变化, 则用来改写上一次commit的提交信息
git commit --amend -m "message"

使用 git log 指令查看版本信息

# 查看当前历史区版本信息,显示最顶端指针及以下的记录
git log
# 查看本地库所有的操作记录
git reflog

6. git reset 与 git revert

git reset

使用 git reset 版本编号 进行历史回退,回滚到对应的commit-id,共有如下三种命令方式:

--mixed:默认,可以不带该参数,回滚到所有git addgit commit命令执行之前,暂存区清空,全部到工作区

--soft:工作区不变,暂存区 = 原来的 + 回滚后和回滚前的版本差异

--hard:撤销工作区中所有未提交的修改内容,将所有工作区和暂存区的文件修改全部清空覆盖,不能找回

# 回退到上一次提交的版本
git reset --hard HEAD^

# 回退到上上次提交的版本 hard 之前从历史区回退到工作区
git reset --hard HEAD^^
git reset --hard HEAD~2
git reset --hard reflog中显示的回退前那一次的地址(或者前面的6个字母)

# soft从历史区回退到暂存区,比如注释写的不够详细可以回退到暂存区再写一下再推到历史区,或者修复了一个bug,把前面那个版本退回,将新代码推到暂存区,再一起推到历史区
git reset --soft HEAD^

head指针,表示当前指向的位置,head->main,每提交一次会向前一次,想回退版本让指针向回移动一次

回退后,此时git push会报错,因为本地库HEAD指向的版本比远程库要旧

使用-f参数强制推送

git push -f

git revert

"反做"某一个版本,撤销其中的commit-id并重新生成一个commit-id,以达到撤销该版本的修改的目的,本身不会对其他的提交commit-id产生影响,例如想要修改版本二,但不想影响版本三,则可用git revert修改版本二并生成新的版本四,不影响版本三

也就是说,撤销某次操作,此次操作之前和之后的 commit 和 history 都会保留,并且把这次撤销作为一次最新的提交,版本会递增且不影响之前提交的内容

如果要推送到远程服务器使用git push即可

# 撤销前一次 commit
git revert HEAD

# 撤销前前一次commit
git revert HEAD^

# 撤销某一次commit,会让程序员修改注释,如果想要使用默认注释添加 -n 或 --no-commit 参数
git revert commit_id

# 连续撤销多个commit
git revert -n commit_id_start..commit_id_end
# 或者下述写法
git revert -n commit_id_1
git revert -n commit_id_3

 

三. Git 分支

1.初识分支

git 在初始化的时候,会自动生成一个分支,叫做 main ,表示主要分支的意思

可以自己开辟出很多独立分支,每个功能是一个独立的分支

2.创建分支

使用 git branch 分支名称 指令开辟分支

# 开辟一个 login 分支
git branch login

查看当前分支情况

# 查看当前分支情况
git branch

前面有 * 号并且有高亮显示的,表示当前所处的分支

3.切换分支

使用 git checkout 分支名称git switch 分支名称指令来切换分支

建议使用switch命令,checkout是一个很底层的命令,可以完成很多事情,在特定情况下使用会造成困扰

# 切换到 login 分支
git checkout login
git switch login

# 创建一个新分支并切换到该分支,保留main中所有文件
git checkout -b login
git switch -c login

# 创建一个新分支并切换到该分支,删除所有跟踪文件
git switch --orphan login

按照分支将所有功能开发完毕后,只要把所有代码都合并到 main 主分支上就行了

4.合并分支

使用 git merge进行分支合并,将别的分支的内容合并到此时所处的分支上

# 切换到 main 分支
git switch main

# 把 login 的内容合并到自己的分支
git merge login

当两个分支对同一个文件均进行过修改时,合并后会产生冲突,需要手动合并(出现master|MERGING的时候),这时打开文件把需要留的东西留下需要删的东西删掉,然后重新add和commit就可以了(合并后的还是只在main里面,login里面还是他原来的子功能)

5.删除分支

切换到别的分支,使用 git branch -d 分支名称 指令删除分支

# 先切换到别的分支
git switch main

# 删除 login 本地分支
git branch -d login

# 强制删除
git branch -D login

# 有必要的情况下,删除远程分支
git push origin --delete login

 

四.远程仓库

1.创建远程仓库

在远程代码托管平台 github 中创建一个新仓库

2.添加仓库地址

使用 git remote add origin 仓库地址 地址添加远程仓库

# 添加仓库地址
git remote add origin <仓库地址>

# 删除仓库地址(比如第一次后面的地址写错了)
git remote remove origin

remote:远程

add:添加

origin:一个变量名(指代后面一长串的地址,即指代这个仓库,可以修改为别的名字)

3.git push

使用 git push 指令将历史区中的所有内容推送到远程仓库中

# 上传内容,推送到 main 分支
git push origin main

# 如果当前分支与多个主机存在追踪关系,使用 -u 参数指定一个默认主机,后面可以不加参数使用 git push
git push -u origin main

第二次上传时,因为有刚才的记录,不需要再写 originmain ,会默认传递到 origin 这个地址的 main 分支上,如果需要推送到其他分支,需要加以说明

# 第二次上传
git push

4.git clone

使用 git clone 仓库地址指令将远程仓库中的内容克隆一份到本地,默认克隆main主分支

可以克隆别人的 公开 的仓库,也可以克隆自己的仓库

# 克隆仓库主分支
git clone <仓库地址>

# 克隆远程指定分支
git clone -b <分支名> <仓库地址>

5.git pull

与远程仓库关联后,如果代码有他人进行更新,可以使用git pull获取最新代码

# 拉取远程 main 最新代码到本地分支 main 并进行合并
git pull origin master
git pull

如果远程和本地都有修改,再pull就会产生冲突,和当前一样手动合并,然后add,commit,push

提交分支git push origin login,再git pull origin login拉取,不会和主分支合并

对于bugfix分支,应该是切到master分支然后merge合并,然后把他删掉。如果已经将bugfix推上去了,可以用

git push origin :bugfix用空覆盖,将远程的bugfix分支删除

用fork把他人的项目整到自己的github上,然后对这个项目修改(clone……),然后pull后点pull request,如果作者批准并且merge就可以上到他的项目里

 

五.VScode集成Git

VSCode内置版本控制机制,并自带对Git和Github的支持,可以安装插件以支持其他控制软件,如SVN等,可以在其中进行可视化 git 管理

 

六. gitignore

在一些项目中,我们不想让本地仓库中所有文件都上传到远程仓库中,因为其中有一些测试文件、配置文件、依赖文件等,内容太大,并且我们只想展示源代码,则可以写一个.gitignore文件,将不需要推送的文件进行自动忽略

git 忽略规则匹配语法:

  • 空行不匹配任何文件,可作为分隔符,可用反斜杠转义
  • 如果本地仓库文件已被跟踪,那么即使在 .gitignore 中设置了忽略,也不起作用
  • .gitignore 文件也会被上传的到远程仓库,所以同一个仓库的人可以使用同一个.gitignore 文件
  • 对于一个项目,可以在最上层设置.gitignore文件,也可以在各个文件夹中设置,所以有根目录和当前目录指令的区别
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
# 开头的是注释

# 忽略根目录下的 bin 文件
/bin

# 忽略当前路径下的 bin 文件夹
bin/

# 忽略当前路径下的.c文件,不忽略子目录中的.c文件
/*.c

# 忽略 bin 文件夹下的.c文件,不忽略子目录中.c文件
bin/*.c

# 忽略所有.log文件
*.log

# 忽略/bin, a/bin, a/b/bin等
**/bin

# 忽略a/b, a/x/b, a/x/y/b等
a/**/b

# 不忽略 bin 目录下的 run.sh 文件
!/bin/run.sh

# 忽略当前路径的 config.php 文件
config.php

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

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

相关文章

一个软开关,长按开机,自动关机的实现。

连接说明&#xff1a; 1.ADP_PWR接适配器输入插座 当适配器插入的时候 ADP_PWR接入适配器7.4~8.4V电压 2.ON/OFF_KEY 接开关按键&#xff0c;当开关按下的时候&#xff0c;ON/OFF_KEY 接入电池电压 7.4V 3.ON/OFF_CTRL接单片机IO口 开机实现说明&#xff1a; 1.长按开…

存储随笔原创科普视频首播~

一周之前&#xff0c;存储随笔创建了B站账号。小编利用上个周末休息时间专门研究了B站视频录制的各种方案。发现并没有想象的很容易&#xff0c;先花了很长时间准备了一个PPT&#xff0c;再准备演讲大纲&#xff0c;最终磕磕绊绊完成了首期原创视频录制&#xff01; 可能不尽如…

Mybatis中显示插入数据成功,但在数据库中却没有显示插入的数据

1、在mybatis-config.xml中查看是否添加了JDBC&#xff0c;并引入了映射文件 2、在测试文件中&#xff0c;结尾是否添加提交事务&#xff1a;sqlSession.commit() 添加了这一步就能够将数据提交到数据库中&#xff0c;最后再关闭事务&#xff1a;sqlSession.close() * 如果运…

基于SpringBoot校园外卖服务系统设计与实现

点赞收藏关注 → 私信领取本源代码、数据库 一、项目概述 项目名称&#xff1a;基于SpringBoot校园外卖服务系统设计与实现 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 主要技术&#xff1a;SpringBootMybatisMySQL 运行环境&#xff1a;Windows7以上、J…

Windows Server 2016 配置NTP客户端

目录 1. 前提条件1.1 进入服务管理界面1.2 开启Windows Time服务 2. 情况1&#xff1a;可以直接设置NTP时钟2.1 Internet时间设置 3. 情况2&#xff1a;有的版本服务器上没有“Internet时间”3.1 运行gpedit.msc 打开本地策略组3.2 Windows 时间服务3.3 配置Windows NTP客户端3…

Replidec:使用朴素贝叶斯分类器从宏基因组数据中识别病毒生命周期

Replidec - Use naive Bayes classifier to identify virus lifecycle from metagenomics data | bioRxivReplidec - Use naive Bayes classifier to identify virus lifecycle from metagenomics data | bioRxiv 安装 docker pull denglab/replidec 使用 for i in *_vOT…

draw.io 去除箭头

问题 draw.io 去除箭头 详细问题 笔者使用draw.io绘制流程图&#xff0c;需要没有箭头的连接器&#xff0c;但是General所提供的连接器添加了尾部箭头&#xff0c;如何取消尾部箭头? 解决方案 1、点击选中选择连接器&#xff08;箭头1&#xff09;。在格式面板的“Style…

【C++】关联式容器——map和set

1 关联式容器 STL中我们常用的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 那什么是关联式容器呢&#xff1f;它与序…

keepalived高可用方案

keepalived概念 keepalived是一个开源的虚拟路由冗余协议&#xff08;VRRP&#xff09;实现&#xff0c;它能够提供高可用性&#xff08;HA&#xff09;的解决方案。VRRP是一种网络协议&#xff0c;用于在多个路由器之间分配路由任务&#xff0c;以保证网络的可靠性。在服务器…

Ubuntu的快照和系统恢复

一、快照 ubuntu的快照&#xff0c;相当于将你系统目前的状态做一个备份&#xff0c;完全复制的当前状态。便于之后进行恢复 名称任意 这个文件就是快照文件 二、系统恢复 若你的系统出现问题&#xff0c;这时可以使用快照进行快速修复&#xff1a;

对于组件通信的深刻理解

父组件传递数据给子组件 props传递数据 父组件在子组件的标签上写自定义的属性,属性值是自己的变量,当渲染到子组件时,执行props会找自定义属性,内存了变量的内存,可访问到,写props,会生成vue实例的时候,将props的变量赋给,值找变量内存存入变量.插值语句等可访问.父组件会变…

第四百二十二回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义标题栏"相关的内容&#xff0c;本章回中将介绍自定义Action菜单.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里提到的…

数据结构(五)——树森林

5.4 树和森林 5.4.1 树的存储结构 树的存储1&#xff1a;双亲表示法 用数组顺序存储各结点&#xff0c;每个结点中保存数据元素、指向双亲结点(父结点)的“指针” #define MAX_TREE_SIZE 100// 树的结点 typedef struct{ElemType data;int parent; }PTNode;// 树的类型 type…

阿里云服务器价格购买价格表,2024新版报价查询

2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

提面 | 面试抽题

学习到更新日期面试抽题-1.2案例分析的思维本质2024-3-23 1提面抽屉论述问题的分类 1.1案例分析占总论 1.2案例分析的思维本质

为什么安装了4GB的内存条,却显示只有3.8GB?

朋友们&#xff0c;对于计算机而言&#xff0c;其基本包含三部分。 第一&#xff0c;CPU; 第二&#xff0c;存储器&#xff08;内存、物理内存&#xff09;&#xff1b;第三&#xff0c;输入设备、输出设备。 32位的地址总线&#xff0c;其地址范围就是 CPU 访问内存&#xf…

腾讯云服务器价格查询系统,2024年1年、3年和5年活动价格表

腾讯云服务器多少钱一年&#xff1f;61元一年起。2024年最新腾讯云服务器优惠价格表&#xff0c;腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

如何设计循环队列(两种方法)

文章目录 前言一、方法一:数组法二、方法二.链表法总结 前言 前面有提到过队列的知识&#xff0c;这次来说一下怎么设计一个循环队列 一.循环队列&#xff08;力扣&#xff09; . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资…

Git bash获取ssh key

目录 1、获取密钥 2、查看密钥 3、在vs中向GitHub推送代码 4、重新向GitHub推送修改过的代码 1、获取密钥 指令&#xff1a;ssh-keygen -t rsa -C "邮箱地址" 连续按三次回车&#xff0c;直到出现类似以下界面&#xff1a; 2、查看密钥 路径&#xff1a;C:\U…

2024年阿里云服务器价格查询系统,最新报价

2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…