【Git】上传本地文件到Git(以Windows环境为例)

Git 的下载参考:Git 安装及配置

一、Git 上传的整体流程

1、工作区 => 本地仓库

将本地文件上传到Git,需要先上传到本地仓库,然后再上传到远程仓库。要上传文件到本地仓库,不是直接拷贝进去的,而是需要通过命令一步步上传。从工作区到本地仓库分为了三步,也可以说是三个区域:

① 工作区

我们要上传的文件所处位置,一般称为“工作区”,工作区是开发者直接编辑和修改文件的地方,包括源代码、配置文件等。

② 暂存区

暂存区用于暂时存储待提交的修改文件,暂存区的存在允许开发者在提交前对修改的文件进行审核。此外,暂存区允许将相关修改进行逻辑分组,开发者可以将同一部分修改的文件添加到暂存区,形成一个逻辑上的组,方便开发者管理和提交相关的修改。

③ 本地仓库

本地仓库记录了项目从创建开始的所有修改、提交和版本信息,通过本地仓库,开发者可以追踪、查看和恢复之前的任何版本,包括历史各个版本的备份。此外,本地仓库支持分支操作,开发者可以创建、切换和合并不同的分支。

2、本地仓库 => 远程仓库

为了可以让其他用户看到自己的成果,我们可以将自己本地仓库的内容上传到远程仓库;如果我们希望借鉴其他用户的成果,我们可以将远程仓库里的一些内容拉取或者克隆到本地仓库。

二、工作区 到 本地仓库

1、建立本地仓库(git init)

使用 git init 来建立一个本地仓库,该命令将当前目录转换为一个 git 仓库,并在该仓库中跟踪新的或已有的文件。如果当前目录下出现了 .git 目录,说明本地仓库建立成功。

2、工作区—暂存区(git add)

使用 git add 将工作区的内容添加到暂存区,可以搭配 .gitignore 文件使用。Windows 的默认换行符是回车(CR)+换行(LF)即'\r\n',而Linux环境的默认换行符是换行(LF)即'\n'。针对不同环境,在操作之间,输入如下命令

# Windows 环境
#提交时转换为LF,拉取时转换为CRLF
git config --global core.autocrlf true# Linux 环境
#提交时转换为LF,拉取时不转换
git config --global core.autocrlf input

创建 .gitignore 文件(可跳过)

 默认情况下,Git会管理工作区的所有文件,然而对于一些临时文件,我们不希望Git 来管理,此时我们可以在 .gitignore 文件中加入要忽略的目录或者文件,.gitignore 文件的写法如下。(若没有要忽略的文件,可以直接使用 git add)

# 忽略所有的 .a 文件
*.a# 忽略 build 目录下的所有文件
build/# 忽略build 目录下的所有 .txt 文件,注意 build/doc/ 下的 .txt 文件不会被忽略
build/*.txt# 忽略build目录以及子目录下的所有 .txt 文件
build/**/*.txt

git add 将文件拷贝到暂存区

只要还没提交到本地仓库,我们可以多次上传文件到暂存区。 

# 命令格式: git add <file1> <file2> ...
# 将当前目录下的file.txt 上传至暂存区
git add file.txt# 将当前目录下所有的文件上传至暂存区
git add . 

可以使用 git status 命令查看工作区和暂存区之间的状态,它会列出有关工作区和暂存区的文件的当前状态信息,例如已修改、已暂存等。一旦commit,git status 保存的修改就会被清空。

3、暂存区—本地仓库(git commit)

git commit 表示提交一条上传记录到本地仓库,同时为该条记录分配ID,有了ID我们就可以进行版本回溯,提交时可以携带提交信息,即本次提交做出了哪些修改。

# 命令格式: git commit -m "提交信息"
git commit -m "first commit"

随后可以输入 git log 来查看提交历史,它会显示当前分支的所有提交记录,包括提交者、提交时间、提交的信息等。

注意:如果是直接输入 git commit,则会弹出编辑器让你输入提交信息,使用方法类似于Linux环境下的vi编辑器。

三、本地仓库 到 远程仓库

要将本地仓库的内容上传到远程仓库,最终需要使用 git push 来上传,git push 的命令格式如下。

git push [-f] [--set-upstream] [远程仓库名] [本地分支名][:远程仓库的分支名]
  • 远程仓库名:可以是url,也可以是远程仓库在本地的别名
  • 远程分支名:可省略,省略的情况下和本地分支名一致
  • -f : 本地内容强制覆盖远端内容(一般不使用)
  • --set-upstream: 推送到远端的同时,建立起和远端分支的关联关系,如果建立起关系,以后不必输入远程仓库名、本地分支、远程仓库分支,可以直接使用 git push 来推到远端;反过来说,在建立联系的时候,必须要有远程仓库名、本地分支、远程仓库分支。

1、添加远程仓库在本地的别名

若要多次上传,使用别名会更加方便,添加远程仓库在本地的别名本质就是在本地添加远程仓库的映射,可以在本地添加多个仓库映射。

基本格式如下:

# <nickname>: 远程仓库在本地的别名,一般是origin
# <address>:  远程仓库的url
git remote add <nickname> <address>

使用 git remote 命令查看远程仓库的映射是否存在 

2、本地仓库 — 远程仓库(git push)

接下来便可以使用 git push 将本地仓库的内容添加到远程仓库了,远程分支在省略的情况下默认和本地分支保持一致。

# 等价于 git push origin master:master
# 含义: 将本地的master分支推送到 origin 仓库的master分支
git push origin master

注意:若遇上下面的情况,是因为本地内容和远程内容不一致(可能是其他人提交的代码或者远程分支的更新),所以Git 拒绝了你的推送。

此时需要先让本地内容和远程仓库的内容同步,使用 git pull 命令将远程仓库的内容同步到本地,相当于做了 “拉取 + 合并” 两步。(合并的作用是将目标分支的修改应用到当前分支)

# 拉取origin远程仓库的master分支,同时与当前分支进行合并
git pull origin master# 等价于下面两步
git fetch origin master    # 仅拉取
git merge origin master    # 仅合并

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

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

相关文章

【数据结构】哈希表的开散列和闭散列模拟

哈希思想 在顺序和树状结构中&#xff0c;元素的存储与其存储位置之间是没有对应关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过多次的比较。 顺序查找的时间复杂度为0(N)&#xff0c;树的查找时间复杂度为log(N)。 我们最希望的搜索方式&#xff1a;通过元素…

STM32 新建寄存器版本MDK工程简要步骤

新建工程文件夹 新建一个工程根目录文件夹&#xff0c;并在该文件夹里新建D/M/O/P/U文件夹。 Drivers&#xff1a;存放与硬件相关的驱动层文件Middlewares&#xff1a;存放正点原子提供的中间层组件文件和第三方中间层文件Output&#xff1a;存放工程编译输出文件Projects&am…

linux系统下vscode portable版本的python环境搭建003:venv

这里写自定义目录标题 python安装方案一. 使用源码安装&#xff08;有[构建工具](https://blog.csdn.net/ResumeProject/article/details/136095629)的情况下&#xff09;方案二.使用系统包管理器 虚拟环境安装TESTCG 本文目的&#xff1a;希望在获得一个新的系统之后&#xff…

Vue核心基础4:绑定样式、条件渲染、列表渲染

1 绑定样式 【代码】 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绑定样式</title><s…

FL Studio版本升级-FL Studio怎么升级-FL Studio升级方案

已经是新年2024年了&#xff0c;但是但是依然有很多朋友还在用FL Studio12又或者FL Studio20&#xff0c;今天这篇文章教大家如何升级FL Studio21 FL Studio 21是Image Line公司开发的音乐编曲软件&#xff0c;除了软件以外&#xff0c;我们还提供了FL Studio的升级服务&#…

C++11中的简化声明

auto 用于自动类型推断&#xff0c;显示定义变量&#xff1a; typeid typeid推导出来的是字符串&#xff0c;只能看不能用&#xff0c;通过打印来查看变量的类型&#xff0c;用法如上。 decltype 同样是用来自动推导类型&#xff0c;与auto的区别是&#xff0c;auto在定义时必…

MySQL篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?二、锁的优化策略三、索引的底层实现原理和优化四、什么情况下设置了索引但无法使用前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽…

PKI - 借助Nginx实现_客户端使用自签证书供服务端验证

文章目录 Pre概述在 Nginx 中实现客户端使用自签名证书供服务器验证1. 生成客户端密钥对2. 生成自签名客户端证书3. 配置 Nginx4. 重启 Nginx 修5. 验证 在浏览器中安装客户端证书以便进行访问 Pre PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 PKI - 数…

线性代数的本质——1 向量

向量是线性代数中最为基础的概念。 何为向量&#xff1f; 从物理上看&#xff0c; 向量就是既有大小又有方向的量&#xff0c;只要这两者一定&#xff0c;就可以在空间中随便移动。 从计算机应用的角度看&#xff0c;向量和列表很接近&#xff0c;可以用来描述某对象的几个不同…

人力资源智能化管理项目(day05:角色管理)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 搭建页面结构 分页组件&#xff1a;设置layout&#xff0c;表示需要显示的内容&#xff0c;用逗号分隔&#xff0c;布局元素会依次显示。prev表示上一页&#xff0c;next为…

HP Pavilion Laptop 15-cs3xxx原装出厂Win10.20H1系统

惠普笔记本HP Pavilion - 15-cs3030tx原厂Windows10系统镜像下载 链接&#xff1a;https://pan.baidu.com/s/1LmdJoN7F3BGvt49ovq-eww?pwdzgmt 提取码&#xff1a;zgmt 适用型号&#xff1a; 15-cs3001tx&#xff0c;15-cs3030tx&#xff0c;15-cs3031tx&#xff0c;15-cs…

数据结构:并查集讲解

并查集 1.并查集原理2.并查集实现3.并查集应用4.并查集的路径压缩 1.并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中…

寒假作业2024.2.11

请使用递归实现n! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <unistd.h> int fun(int n) {if (n0) {return 1;} else {return n*fun(n-1);} } int main(int argc, const char *argv[]) {int n…

Vue核心基础3:计算属性和监视属性

1 计算属性 这边以姓名案例&#xff0c;来介绍计算属性 <body><div id"root"><!-- 姓&#xff1a;<input type"text" v-model:value"firstName"><br>名&#xff1a;<input type"text" v-model:value&…

《CSS 简易速速上手小册》第10章:未来的 CSS(2024 最新版)

文章目录 10.1 CSS 的新特性和趋势10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 CSS Grid 创建响应式图库10.1.3 拓展案例 1&#xff1a;利用 CSS 变量实现主题切换10.1.4 拓展案例 2&#xff1a;使用 lab() 颜色和 layer 规则优化样式 10.2 CSS Houdini&#xff1a;魔法般…

C++进阶(十四)智能指针

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、为什么需要智能指针&#xff1f;二、内存泄漏1、 什么是内存泄漏&#xff0c;内存泄漏的危…

STM32 7-8

目录 ADC AD单通道 AD多通道 DMA DMA转运数据 DMAAD多通道 ADC AD单通道 AD.c #include "stm32f10x.h" // Device header/*** brief 初始化AD所需要的所有设备* param 无* retval 无*/ void AD_Init(void) {RCC_APB2PeriphClockCmd(RCC_AP…

在程序中使用日志功能

在应用中&#xff0c;需要记录程序运行过程中的一些关键信息以及异常输出等。这些信息用来排查程序故障或者其他用途。 日志模块可以自己实现或者是借用第三方库&#xff0c;之前写过一个类似的使用Qt的打印重定向将打印输出到文件&#xff1a;Qt将打印信息输出到文件_qt log输…

【JavaEE】_HTML常用标签

目录 1.HTML结构 2. HTML常用标签 2.1 注释标签 2.2 标题标签&#xff1a;h1~h6 2.3 段落标签&#xff1a;p 2.4 换行标签&#xff1a;br 2.5 格式化标签 2.6 图片标签&#xff1a;img 2.7 超链接标签&#xff1a;a 2.8 表格标签 2.9 列表标签 2.10 表单标签 2.10…

C++继承(二):菱形继承、virtual菱形虚拟继承

目录 一、了解菱形继承 二、菱形继承的问题 三、虚拟继承virtual 3.1virtual 3.2虚拟继承解决数据冗余和二义性的原理 四、总结/继承和组合 一、了解菱形继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承 多继承&#xff1a;一个子类有两个或…