Git学习与使用

目录

  • 版本控制、GIT以及SVN
    • 常见的版本控制方法
      • 本地版本控制
      • 集中式版本控制
      • 分布式版本控制
    • SVN与Git的区别
  • 下载与安装Git
    • 安装:
  • Git环境配置
    • Git必要的配置
  • Git的基本理论(核心)
  • Git项目搭建
    • 创建目录
  • git文件操作
    • 忽略文件
  • 使用码云(gitee)
  • 辅助学习
    • 常用的Linux命令

版本控制、GIT以及SVN

核心思想:控制版本,新的版本要迭代,老的版本要保存

版本控制的优势:

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

常见的版本控制工具:

  • Git
  • SVN ( Subversion )
  • CVS ( Concurrent Versions System )
  • Vss ( Micorosoft Visual SourceSafe )

常见的版本控制方法

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS
在这里插入图片描述

集中式版本控制

代表:SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
在这里插入图片描述

分布式版本控制

代表:Git
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
在这里插入图片描述

SVN与Git的区别

下载与安装Git

windows下载地址

直接选择稳定版的下载即可
在这里插入图片描述

安装:

选择安装位置,可以选择自己的环境
在这里插入图片描述
选择Git默认的编辑器,选择自己常用的就行
在这里插入图片描述

Git环境配置

下载好之后会发现有三个应用Git Bash、Git CMD、Git GUI
Git Bash:unix与Linux风格的命令行,使用最多,最推荐
Git CMD:windows-cmd风格的命令行
Git GUI:图形界面的Git,不建议使用

由于我们需要使用Git Bash所以需要对Linux有一定了解,下面提供了一些基本的Linux的命令

Git必要的配置

所有的配置文件都保存在本地

git config -l # 查看配置
git config --system --list # 查看系统配置
git config --global --list # 查看本地配置(主要包含的使用者的账户和密码)

系统配置和用户配置都是存在Git文件下的配置项文件:
可以在Git目录下搜索gitconfig查看自己的系统配置:
在这里插入图片描述
用户目录在C盘下
在这里插入图片描述
了解了配置项,我们需要用命令行进行用户项配置:

git config --global user.name “用户名”
git config --global user.email “邮箱地址”

在这里插入图片描述
此时可以查看C盘下用户配置文件,查看修改情况。

Git的基本理论(核心)

Git有四个区域:

  • workspace:工作区,平时存放代码的地方
  • index/stage: 暂存区,用于临时存放改动,实际上它只是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最近放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是项目组中的一台电脑用于远程数据交换
    在这里插入图片描述
    git的工作流程一般是这样的:
    1.在工作目录中添加、修改文件;
    2.将需要进行版本管理的文件放入暂存区;
    3.将暂存区域的文件提交到git仓库。
    因此,git管理的文件有三种状态:modified-已修改,staged-已暂存,commiteed-已提交

Git项目搭建

工作目录(workspace)一般就是希望通过Git帮助你进行文件夹管理,可以是你的项目目录,也可以是空目录,但是不建议出现中文。
日常使用需要记住如下6个命令
在这里插入图片描述
重点是push、commit和add

创建目录

本地仓库搭建:git init,执行完git init会出现一个.git文件

在这里插入图片描述
或者使用git clone的方式进行创建
这种方式是克隆远程目录,将远程服务器上的仓库完全镜像一份到本地

git clone url

git文件操作

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在不想要提交的文件,或者要提交的文件没提交上。

  • Untracked:未跟踪,此文件在文件夹中,但是并没有加入到git库中,不参与版本控制。通过git add状态变成Staged.
  • Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中的完全一致。这种类型的文件一般有两个去处,如果它被修改,会变成Modified.如果使用git rm移除版本库,则成为Untracked文件。
  • Modified:文件已被修改,仅仅是修改,并没有进行其他操作。这个文件也有两个去处,通过git add进入暂存staged状态,使用git checkout,则丢弃修改过,返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
  • Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变成一致,文件未Unmodify状态,执行git reser HEAD filename取消暂存,文件状态变成Modified.

在刚才初始化好的文件中检查文件状态

git status

在这里插入图片描述
显示没有文件被跟踪,我们在该文件夹下创建一个文件(名为main.js),继续使用status检查状态,发现main.js未被跟踪。

在这里插入图片描述
此时我们使用命令

git add . # 将文件添加到暂存区中(添加所有文件到暂存区)

此时发现main.js进入待提交的状态。
在这里插入图片描述
此时利用commit命令提交到本地仓库

git commit -m “消息内容” #提交暂存区中内容到本地仓库 -m是提交信息

在这里插入图片描述

忽略文件

有些时候我们不需要把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件。
所以我们需要在主目录下简历“.gitignore”文件,此文件有如下规则:

  1. 忽略文件夹中的空行或以井号(#)开始的行将会被忽略。
  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号( ?)代表一个字符,方括号([abc])代表可选字符范围大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
例如
*.txt  #忽略所有.txt结尾的文件
!lib.txt   # 但是lib.txt除外
/temo     # 忽略项目跟目录下的TODO文件,不包括其他目录temp
build/      # 忽略build/目录下的所有文件
doc/*.txt   #忽略doc/notes.txt 但是不会忽略doc/server/arch.txt

使用码云(gitee)

设置本机绑定SSH公匙,实现免密码登录!

首先通过git命令行获取密钥
通过命令 ssh-keygen 生成 SSH Key

ssh-keygen -t ed25519 -C “Gitee SSH Key”
其中 -t key 类型
其中 -C 注释

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
|    .o           |
|   .+oo          |
|  ...O.o +       |
|   .= * = +.     |
|  .o +..S*. +    |
|. ...o o..+* *   |
|.E. o . ..+.O    |
| . . ... o =.    |
|    ..oo. o.o    |
+----[SHA256]-----+

中间遇到停顿直接回车,一共三次回车。

2.查看生成的SSH公钥和私钥:

ls ~/.ssh/
输出:
id_ed25519 id_ed25519.pub

  1. 读公钥

cat ~/.ssh/id_ed25519.pub
输出,如:
ssh-ed25519 AAAA***5B Gitee SSH Key

或者直接去C盘用户目录下找到.ssh文件,找到相关的id_ed25519.pub,用记事本打开也能得到一段很长的密钥。

新建git仓库
在这里插入图片描述

辅助学习

常用的Linux命令

cd …:(中间有空格哈)回到上一级目录
cd 路径名:路径跳转
pwd:显示路径
clear:清除屏幕
ls:列出当前目录下所有文件
touch:新建文件(touch main.py:在当前目录下新建一个名为main.py的文件)
rm:删除文件 (rm main.py:移除main.py文件)
mkdir:创建一个目录(文件夹mkdir test2:创建一个test2的目录)
rm -r:删除目录(rm -r test2:删除刚刚创建的test2目录)

mv:移动文件(move main.py test2:将main.py移动到test2中)
reset:重新初始化终端
history:查看历史命令
help:查看某个命令的帮助
exit:退出

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

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

相关文章

RabbitMQ【笔记整理+代码案例】

1. 消息队列 1.1. MQ 的相关概念 1.1.1. 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息…

Xcode 更新后 Version 14.3.1报错

File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a Xode版本和pod版本不一致导致,改成一致就可以了 放在podfile文件里,最后一个pod,和最后一个end中间 Showing Recent …

DHCP静态分配IP地址、IP-MAC绑定、静态ARP有哪些区别?

DHCP静态分配IP地址、IP-MAC绑定、静态ARP这三个功能都涉及到IP地址和MAC地址的对应关系,但其应用场景及实现的功能有所不同,如表所示: 原文地址https://support.huawei.com/enterprise/zh/knowledge/EKB1000052241

云计算基础教程(第2版)笔记——基础篇与技术篇介绍

文章目录 前言 第一篇 基础篇 一 绪论 1.1 云计算的概念以及特征 1.1.1云计算的基本概念 1.1.2云计算的基本特征 1.2 云计算发展简史 1.3 三种业务模式介绍 1. 基础设施即服务(IaaS) 2. 平台即服务(PaaS) 3. 软…

【高性能、高并发】页面静态化解决方案-OpenResty

OpenResty OpenResty介绍 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项 用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关 OpenResty通过汇聚各种设计精良的…

css 网站置灰功能

文章目录 filter 属性backdrop-filter 属性mix-blend-mode 属性css 变量低版本浏览器方案 filter 属性 html {filter: gray; /* 兼容 IE6-9 的滤镜 */filter: grayscale(.95); // 对图片进行灰度转换-webkit-filter: grayscale(.95); }backdrop-filter 属性 为一个元素后面区…

ModaHub魔搭社区:开源向量数据库的Milvus怎么读?

Milvus是一个中文词语,意为“Milvus navigate,为智慧找方向,为价值做链接,为创作者做伙伴”。在读这个词语时,可以按照以下方式发音: 首先,我们需要将Milvus这个词语分解成多个音节。根据汉语拼音的规则,可以将其分解为“mi”、“lu”、“su”。 接下来,我们需要根…

matplotlib调整图例 legend 的位置,调整标题 title 位置(像素级别调节,可以调整到图像内部,figure内部)

一、标题调整 1.使用常规方法调整标题位置 1.1常规方法使用loc只能调整标题在图中上部的左、中、右位置,使用的代码如: plt.title("title",locleft)import matplotlib.pyplot as plt x[1,2,3,4,5] y[2,4,6,8,10] loc_select[left,center,ri…

什么是HTML5?HTML5的含义、元素和好处

HTML5是超文本标记语言(HTML)的第五版,网络浏览器使用它来可视化代码。它在网站功能、网页内容开发等方面有一些改进。 HTML的发展 在万维网的早期,主要的网络浏览器创造者(例如微软Internet Explorer和Mosaic Netscape)开发了特…

【Linux】进程间通信 -- system V共享内存

共享内存的原理共享内存的用法共享内存的概念:1.使用shmget生成共享内存2.使用ftok使得进程能看到同一内存块3.模拟创建共享内存查看key值与shmid值再谈keyIPC资源 4.shmctl对共享内存进行控制5.shmat将共享内存段连接到进程地址空间6.shmdt将共享内存段与当前进程脱…

12.7 跳转与存储器访问指令

目录 跳转指令 方式一 方式二 方式三 程序返回 ARM指令的条件码 比较指令 内存访问指令(一) load(LD加载)/srore(ST存储)指令:访问(读写)内存 写内存 读内存 …

Linux—实操篇:实用指令

目录 1、指定运行级别 1.1基本介绍 1.2、示例 1.3、CentOS7 后运行级别说明 2、找回root密码 3、帮助指令 3.1、man指令 3.2、help指令 4、文件目录指令 4.1、pwd 指令 4.2、ls 指令 4.3、cd 指令 4.4、mkdir 指令 4.5、rmdir 指令 4.6、touch 指令 4.7、cp 指…