.git文件夹_Git入门细致讲解

2023-10-26

什么是 git?

分布式的版本管理与协作系统.

安装 Git

下载安装就不详说了.

安装之后, 右键会出现 Git bush here, 在当前文件夹打开 bash, 是一个小型的 linux shell, 可以在上面进行关于 git 的操作, 他自带 mingw (编译运行 c/c++的环境).

打开 powershell 之后输入git就会出来它的提示了, 要是没有的话, 就是path没有配置成功, 需要重新配置一下了.

Git 的工作要素

版本: 版本管理器当然要有版本, V1.0.0, V1.0.1 等等, 每个版本都有自己独一无二的名字, 是一个 40 位长的 hash 值;

分支: 分支 branch 就是把一系列版本串在一起的东西. 一条分支上有多个(或者 1 个)版本, 主分支叫做 master, 同样也是默认分支, 代表着版本的开发历程; 一条分支就是一些版本的集合.

HEAD: 是一个指针, 代表着 git 正在使用的版本(不是分支), git 每一次只能看向一个版本;

远程仓库: git 不只是 仅仅在本地, 或者 仅仅在远程 使用. 仓库远程 origin 是大家一起做好的版本存放的地方.

Git 的结构

git 在进行版本控制是通过 4 个部分来实现的: 工作区, 暂存区, 仓库, 远程仓库;

  • Workspace:工作区

就是能在电脑里能看到的目录,比如 c:/Code 文件夹就是一个工作区, 每一个git的工作区都是有一个.git文件夹, 里面保存着版本信息:

  • Index / Stage:暂存区

用于存放刚刚经过修改并且没有经行上传的版本, 也是在本地的. 通过 git add . 来把所有工作区内所有文件添加到暂存区

  • Repository:仓库区(或本地仓库 / 版本库)

在工作区, 例如c:/Code有一个隐藏目录.git 这个不是工作区, 而是工作区的版本库 (Repository). 通过git commit -m "message"来提交版本;

  • Remote:远程仓库

是运程存放代码的地方, 相当于你工作区的备份 ,例如 github, gitlab. 通过git push提交到远程仓库

当然在提交到远程仓库之前, 你要先告诉git你的远程仓库在哪, 下文会解决这个问题的.

Git的用法

根据流程:

  1. 你要做开发, 当然最先需要一个仓库 repo, 用来存放你现在正在做的工作.
  2. 切换到你正在工作的文件夹里, git init 把这个文件夹注册成 git 的一个仓库, 你想有多少个 git 仓库都行, 但是当父文件夹已经注册成为仓库之后, 子文件夹就不能成为仓库了 (不允许套娃), 有时候git会因为这样的套娃而报错的. git init 可以注册一个空文件夹或者已经有东西的文件夹.
如何判断是否成为了 git 仓库? 看文件夹下是否有 .git文件.
  1. 有了仓库之后就可以新建一个分支 branch;
  2. 在注册成为一个git仓库之后自带master分支. 没有特殊要求的话, 默认分支就可以啦, 从今天起, 你就是我的 master (默认分支)了. 但是要是不希望直接在 master 上工作呢? 用 git branch ${branch name} 来创建分支, 切换分支的时候用 git checkout ${branch name} , 查看有什么分支: git branch
  3. 有了分支之后就可以提交版本了;
  4. 一开始这个版本里是空荡荡的, 因为你还没有添加东西进去, git 还不知道有哪些东西是你想提交成为版本的. 使用 git add . 来把整个文件夹里的全部东西都放进去成为版本(成为版本之前, 被称为暂存区)! 当然你会有不想放进去的文件, 比如自动生成的文件, 还有自己做测试的文件, vscode 的设置文件, 新建一个 .gitignore 文件来排除掉他们, 在下面会较详细的讲解.gitignore.
  5. 在最后, 提交这个版本就ok啦, git commit -m "${message}" message是本次提交要写的信息, 是这个版本的一个备注, 写这个是一个好习惯, 方便以后遇到问题的时候查找原来的版本.
  6. 但是事情还没有结束, 你想把自己的代码放到 github 上, 便于多人共同编辑, bash # 添加远程仓库, 插值表达式"${}"要替换成你自己的信息. git remote add origin git@github.com:${用户名}/${仓库名}.git # 本地分支推到远程仓库 (第一次推送) git push -u origin master # 以后每次推送都可以只写 git push
  7. 一切就ok啦;

根据操作:

图示 git 常用的几个指令:

Basic operation

# 新建代码库 #
# 在当前目录初始化一个Git repository
$ git init

# 新建一个目录,将其初始化为Git Repository
$ git init [project-name]

# clone 一个 repository 和它的整个代码历史
$ git clone [url]

# 把文件添加到暂存区
$ git add readme.txt

# 把文件从 暂存区 t到 本地仓库  message 是本次提交的文件的说明
$ git commit -m ${message} 

# 配置 #
# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

# 设置 git 代理
# 会显著增加git速度, 比设置映射简单的多
$ git config --global http.proxy 'socks5://127.0.0.1:1080'
$ git config --global https.proxy 'socks5://127.0.0.1:1080'

# 增加/删除文件 #

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 创建SSH公钥 / 私钥 # 

# 创建SSH KEY
$ ssh-keygen -t rsa -C "youremail@example.com"
# 此时公钥私钥会创建在c:user.ssh 文件夹下
# 私钥自己留好, 公钥粘贴在 github 上就行

git 配置文件:

c:user.gitconfig中, 配置好滴文件如下:

<!-- ${} 是插值表达式, 需要换成你自己的信息 -->
[user]
    name = ${username}
    email = ${userEmailAddr}
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true

<!-- 代理, 不需要就不用配置 -->
[http]
    proxy = socks5://127.0.0.1:1080
[https]
    proxy = socks5://127.0.0.1:1080

Tips

github 的 GUI 界面非常好用, 非常爽, 前期用不习惯的时候可以先用这个过度一下, 了解了git的整个流程之后再去用命令行就会习惯啦.

.gitIgnore

###################
# .gitignore 规则 #
###################
# 以'#' 开始的行为注释, 一行写一个规则
# 忽略掉所有文件名是 test.txt 的文件.
test.txt
# 忽略build文件夹
build
# 忽略所有生成的备份文件
.~
# 忽略所有.o 和 .a文件.
*.[oa]
# 忽略 .a 文件
*.a
# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a
# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 文件夹下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

###########################################################################

一般常用的排除文件/文件夹为:
build
# java 自动生成的编译文件夹
bin/
# vscode 的配置文件夹
.vscode/
# Log Files
*.log

删除远程仓库上的文件

> 项目开发初期由于.gitignore 文件配置不正确, 很有可能导致某些不需要的目录上传到 git 远程仓库上了,这样会导致每个开发者提交的时候这些文件每次都会不同。除了一开始提交的时候注意配置好 .gitignore 文件外,我们也需要了解下出现这种问题后的解决办法。

预览将要删除的文件: git rm -r -n --cached <name> 文件/文件夹名称, 加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览.

确定无误后删除文件: git rm -r --cached 文件/文件夹名称.

提交到本地: git commit -m "提交说明"

推送到远程服务器 git push origin master

Reference:

  1. 常用 Git 命令清单 作者:阮一峰 2015 年 12 月 9 日
  2. Git 教程 (详细): https://www.liaoxuefeng.com/wiki/896043488029600
  3. git 配置清单: https://blog.csdn.net/joe_007/article/details/7276195
  4. Git 游乐场 强烈推荐这个, 非常好用的入门教程.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.git文件夹_Git入门细致讲解 的相关文章

  • 系统架构设计师之用例之间的关系:包含、扩展、泛化

    系统架构设计师之用例之间的关系 包含 扩展 泛化
  • Spring session 浏览器sessionId与服务器不一致解决方案

    项目情况 spring boot 和spring session 版本都是 2 0 2 RELEASE 问题描述 请求项目接口后浏览器保存的sessionId与服务器不一致 拿Postman测试如下图 网上找了很久都没发现有人发过这个问题
  • iOS编程基础-Swift(三)-变量与简单类型

    Swift入门指南 iOS9 Programming Fundamentals With swift 第三章 变量与简单类型 深入介绍变量的声明和初始化 介绍所有主要的Swift內建简单类型 这里的简单是相对 集合 说的 第四章会介绍主要的
  • 你所担心的公共Wi-Fi安全问题,痛客们正在想办法

    你是否看过这样的新闻 在公共场所连接免费Wi Fi 然后手机里的个人信息 和银行账号中的钱 瞬间就被 取走 了 而这也造成了如今很多人虽然走到哪儿都会问Wi Fi密码 但一听是公共Wi Fi就摇头的结果 贵州高科控股集团有限公司的主管易延飞
  • ssh用户密码正确但是登录时却报被拒绝

    问题 有时候 在使用SSH登录到服务器时 明明密码正确 但是登录时候却报被拒绝 这是什么原因呢 解决思路 1 此时我们可以查看Linux服务器的安全日志文件 var log secure 若无异常可以看到如下类似报错异常 Oct 6 21
  • 微信小程序开发

    微信小程序开发2023 7 14 7 19 黑马程序员官方文档 https pan baidu com s 1crZTQdIZ7OSDkZIpIWkhYw pwd 1234 vant Weapp 类似element ui的组件库 https
  • 《Graph Learning专栏》 : 高密子图挖掘

    本周我们介绍另一图上的 聚类 算法 高密子图挖掘 Dense Subgraph Mining 这类算法与社群检测不同的是处理的数据对象是异构图 节点的类型不是单一的 同类型节点之间一般没有边 社群检测需要对整张图的节点进行社区划分 而高密子
  • 医学图像——《Difficulty-aware Meta-learning for Rare Disease Diagnosis》

    Lequan Yu Difficulty aware Meta learning for Rare Disease Diagnosis 摘要 这篇文章提出元学习方法解决罕见疾病分类问题 使用 ISIC 2018 skin lesion 分类
  • unity--城市道路车辆行驶

    目录 1 示意图 1 1行驶路线与红绿灯 2 层级面板 2 1红绿灯 2 2车辆路径点 3 属性面板 3 1红绿灯 3 2路径点 4 脚本代码 4 1 控制脚本 4 2红绿灯脚本 4 3路径点脚本 4 4车辆控制脚本 5 实现效果 1 示意
  • Mysql 学习笔记(快速复习)

    Mysql 学习笔记 快速复习 一 MySQL 基础 1 数据库连接工具 1 1 Navicat 使用教程 2 DDL 操作数据库 2 1 创建新数据库 2 2 删除数据库 2 3 使用数据库 3 CLUD 操作数据表 3 1 查询表 3
  • 机器学习-线性回归-sklearn

    线性模型 Scikit Learn中的线性回归 from sklearn linear model import LinearRegression import numpy as np import matplotlib as mpl im
  • Flink Sort-Shuffle:大数据流处理中的排序与洗牌

    在大数据流处理中 排序和洗牌是常见的操作 用于重新组织和处理数据 Apache Flink是一个流式处理框架 提供了强大的排序和洗牌功能 让我们可以高效地处理大规模的数据集 本文将详细介绍Flink中Sort Shuffle的实现原理和相应
  • Ubuntu20.04卸载gcc9.4.0,安装gcc9.3.0方法

    1 卸载旧版本gcc sudo apt get remove gcc 2 添加软件源 sudo add apt repository ppa ubuntu toolchain r test 3 更新 sudo apt get update
  • 分库表数据倾斜的处理让我联想到了AKF模型

    1 背景 最近在做需求的时候需要在一张表中增加一个字段 这张表情况如下 1 拆分了多个库多张表 2 库表拆分按表中商户编码字段hash之后取模进行拆分 由于库表拆分按照商户编码 有些大商家的单子数量远远要高于其他普通商家 这样就造成了严重的
  • Linux 中task_struct和文件系统的关系

    在内核进程运行的时候 有current 宏对应目前进程task struct结构 Linux进程主要数据结构之间的关系 一个进程文件位置是有fs struct描述的 进程打开的文件是有files struct描述的 具体打开的文件描述符是有
  • MSYS的下载与安装

    文章来源http code google com p msys cn 简介 本网站通过自行开发的mpkg包管理程序 提供MSYS发行版的下载服务 MSYS是Windows环境上的UNIX工作环境 由www mingw org项目所开发 但不
  • 【ES6】Iterator迭代器

    文章目录 一 Iterator 二 用法详解 1 基本用法 2 遍历不可迭代对象 2 1 原生具备Iterator接口的数据结构 2 2 遍历不可迭代的对象 2 3 Generator 遍历不可迭代对象 总结 一 Iterator 遍历器
  • 怎么设置html代码中的编码格式,html怎么设置编码

    在html中 可以使用meta标签来设置编码 语法格式 meta标签提供了HTML文档的元数据 元数据不会显示在客户端 但是会被浏览器解析 而charset属性用于定义文档的字符编码 本教程操作环境 windows7系统 HTML5版 De
  • Linux RTC 驱动实验

    目录 Linux 内核RTC 驱动简介 I MX6U 内部RTC 驱动分析 RTC 时间查看与设置 RTC 也就是实时时钟 用于记录当前系统时间 对于Linux 系统而言时间是非常重要的 就和我们使用Windows 电脑或手机查看时间一样

随机推荐

  • SpringMvc-json处理

    SpringMvc json处理 在 JSON 中 使用以下两种方式来表示数据 Object 对象 键 值对 名称 值 的集合 使用花括号 定义 在每个键 值对中 以键开头 后跟一个冒号 最后是值 多个键 值对之间使用逗号 分隔 例如 na
  • CTFShow Web12

    先打开靶机 看到下面的网站 发现啥都点不了 所有按钮都没有实际的动作 根据没啥思路就抓个包 扫描个路径的原则 可以看到有robots txt 访问之 得到关键提示路径 admin 访问之后出现提示框 要求输入账号和密码 账号显然是admin
  • 使用cefsharp在winform中嵌套浏览器,解决程序闪退问题,你也可以做一个红芯浏览器^v^

    使用cefsharp在winform中嵌套浏览器 简单使用cefsharp在winform中嵌套浏览器 在上一节 我们学习了如何简单地在winform中嵌入chromium浏览器 我在使用这个开发项目时 需要点击一个按钮 弹出嵌入浏览器的窗
  • 测试bug 类型及原因分类

    空间管理 测试bug 类型及原因分类 Bug类型 QA设置 代码错误 界面优化 设计缺陷 配置相关 安装部署 安全相关 性能问题 标准规范 测试脚本 其他 bug状态更新备注 DE更新 设计如此 重复bug 外部原因 已解决 无法重现 延期
  • 怎么将英文网页整篇翻译成中文

    作为一个实打实的英语渣渣 这个技能还是需要必备的 英语大神勿笑 当然英语遛的大神是不会知道我们英语渣渣的苦的 话不对说 今天我就跟大家分享一下将一个整篇的英文网页翻译成中文的小技巧 大神跳过 工具 这么牛逼的操作当然要用到Google的Ch
  • Gson实现接口自定义反序列化

    在项目中同样遇到了对json字符串进行反序列化时 遇到了多态情况下 无法找到对应类 所以写这篇文章来mark一下 首先抛出原始代码 再给上解决方案 原始代码 原始json串 type int specs min 1 max 12 unit
  • iOS开发设置状态栏字体颜色

    状态栏的字体为黑色 UIStatusBarStyleDefault 状态栏的字体为白色 UIStatusBarStyleLightContent 一 在info plist中 将View controller based status ba
  • 蓝桥杯C/C++省赛:剪格子

    目录 题目描述 思路分析 AC代码 题目描述 如图p1 jpg所示 3 x 3 的格子中填写了一些整数 我们沿着图中的红色线剪开 得到两个部分 每个部分的数字和都是60 本题的要求就是请你编程判定 对给定的m x n 的格子中的整数 是否可
  • Tensorflow——端到端车牌识别(数据制作、训练、评估、预测)

    利用周末时间断断续续实现端到端车牌识别项目 具备完整的数据集 数据制作 训练 评估 预测业务 项目特点 采用tensorflow中的keras库 训练时数据生成器data generator 对学习keras API有一些参考意义 项目地址
  • TCP窗口字段理解

    TCP窗口字段理解 转载自 https blog 51cto com shjrouting 1612855 TCP数据传输过程中 序列号增长的单元是包的个数 解释 这是初学者最常犯的一个错误 原因是绝大多数老师为了方便学生理解 刚开始举例子
  • C++14几种计时方法的对比

    1 C 14 版本 程序如下 include
  • Mysql中索引的最左前缀原则图文剖析(全)

    目录 前言 1 定义 2 全索引顺序 3 部分索引顺序 3 1 正序 3 2 乱序 4 模糊索引 5 范围索引 前言 之所以有这个最左前缀索引 归根结底是mysql的数据库结构 B 树 在实际问题中 比如 索引index a b c 有三个
  • 多个空格的正则表达式

    一 借鉴别人 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  • webpack5

    为什么有webpack web1 0阶段 还没有明确前端岗位 主要职责是编写静态页面 用Js来进行表单验证或动画效果 为了在页面上动态填充数据 后面也出现了php jsp这种开发模式 web2 0阶段 伴随ajax的诞生 不止负责展示界面
  • C# this.InvokeRequired

    C 为控件单独开辟了一个线程 当另外一个线程的方法需要修改控件或者调用控件的方法时 需要通过控件的InvokeRequired方法来进行 InvokeRequired
  • tp5如何跨数据库查询

    gt 当然前提是 这两个的数据库都在同一个服务器上才可以的 如果没有在同一个服务器上 gt 解决办法 mysql设置一下权限 a 可以对b进行select的操作权限 tp5使用原生查询 代码如下 admin Db query SELECT
  • orangepi5使用sata ssd启动系统

    使用sata ssd启动香橙派官方的Ubuntu系统 以Orangepi5 1 1 0 ubuntu jammy server linux5 10 110为例 因为烧录系统到外接的ssd需要另一个系统辅助所以我们还要烧录一个带桌面的系统到T
  • 解决 LINK : fatal error LNK1104: 无法打开文件“freeglutd.lib”问题

    最近跑程序 发现总有这样的错误 如下图 开始我以为是缺少了freeglutd lib这个文件 之后才发现压根没有这个文件 于是找到了解决办法 鼠标右键单击项目 选择属性 出现如下图 找到C C 预处理器 点开预处理器定义 点编辑 添加 ND
  • libevent源码学习(0):libevent库安装与简单使用

    目录 1 下载并解压libevent库 2 安装libevent库 3 简单使用libevent库 1 下载并解压libevent库 这里下载的是libevent 2 0 21 stable版本的 使用wget命令如下所示 下载地址可通过h
  • .git文件夹_Git入门细致讲解

    什么是 git 分布式的版本管理与协作系统 安装 Git 下载安装就不详说了 安装之后 右键会出现 Git bush here 在当前文件夹打开 bash 是一个小型的 linux shell 可以在上面进行关于 git 的操作 他自带 m