初学者应该怎么学git-下

news2024/11/25 20:47:52

初学者应该怎么学git-下

Git 文件管理

文件四种状态

● 版本控制就是对文件的版本控制,在Git 管理中,文件被统一管理,有四个状态

  1. Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git 库, 不参与版本控制. 通过git add 状态变为Staged

  2. Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种处理方式, 如果它被修改, 变为Modified. 如果使用git rm 移出版本库,则成为Untracked

  3. Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这种文件有两个去处, 通过git add 可进入暂存staged 状态, 使用git checkout 则丢弃修改过, 返回到unmodify 状态,这个git checkout 即从库中取出文件, 覆盖当前修改

  4. Staged: 暂存状态. 执行git commit 则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify 状态. 执行git reset HEAD filename 取消暂存, 文件状态为Modified

文件操作指令

查看指定文件状态

git status [filename]

先在D:\hellogit2\lunar-javascript , 创建一个测试文件ABC.txt 对应的是Untracked未跟踪 可以使用git add 入库
在这里插入图片描述

查看所有文件状态

git status

在这里插入图片描述

在这里插入图片描述

添加所有文件到暂存区

git add .

在这里插入图片描述

提交暂存区中的内容到本地仓库

git commit -m “消息内容”

在这里插入图片描述

忽略文件

实际需求:我们不想把某些文件纳入版本控制中, 如何处理?

忽略文件处理方式

● 不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等, 在主目录下建立".gitignore"文件(默认就有),此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行
  2. 支持Linux 通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示忽略.gitignore 文件所在的目录,不包括其任何子目录中的dir 目录
  5. 如果名称的最后面是一个路径分隔符(/),忽略.gitignore 文件所在的目录和所有子目录的dir 目录
*.java #忽略所有.java 结尾的文件
!wyx.java #wyx.java 除外

还有很多可以去看这一篇博客

(2条消息) .gitignore文件语法和常见写法(就看这篇就行了)_.gitignore 区分大小写_石头wang的博客-CSDN博客

在这里插入图片描述
在这里插入图片描述

看一个实例

在这里插入图片描述

文件D:\hello_git2\lunar-javascript.gitignore

在这里插入图片描述

Gitee 创建代码仓库

创建Gitee 账号

  1. gitee 官网:https://gitee.com/

  2. 注册地址:https://gitee.com/signup

  3. 也可以使用微信、QQ、Github 账号登录…

创建账号-具体操作

  1. 注册地址: https://gitee.com/signup
  2. 查看邮箱,得到验证码
  3. 填写得到的验证码和你的gitee 账号密码
  4. 点击注册, 如果都填写正确,就会注册成功,进入gitee

在这里插入图片描述

创建仓库

点击创建仓库

在这里插入图片描述

输入仓库的信息, 仓库开源, 需要绑定手机号.

在这里插入图片描述

点击创建

在这里插入图片描述

设置本机绑定SSH 公钥,实现免密登录

生成SSH 公钥

  1. 进入C:\Users\Administrator.ssh , 没有就手动创建该文件夹
  2. 如果该目录下有相应文件,先删除(第一次操作是没有的)

在这里插入图片描述

  1. 执行指令ssh-keygen , 生成文件(说明:直接回车即可), ssh-keygen 指令更多说明:https://blog.csdn.net/weixin_37335761/article/details/120146098
  2. 比如: ssh-keygen -t rsa-C ‘hninhao@qq.com’ -f ~/.ssh/github_id_rsa

我这里就简单一点就是直接 ssh-keygen 但是去公司上班或者合作开发推荐复杂一点 我这是只是学习为主没有什么重要资料

在这里插入图片描述

执行完之后就会生成

在这里插入图片描述

将公钥信息public key 添加到码云账户

  1. 点击设置

在这里插入图片描述

  1. 点击SSH 公钥

在这里插入图片描述

  1. 复制生成的id_rsa.pub 内容

在这里插入图片描述

  1. 拷贝到如下位置

在这里插入图片描述

  1. 提示输入密码验证,然后就成功了

在这里插入图片描述

将创建的仓库-克隆到本地

  1. 先找到仓库,并得到仓库地址url

在这里插入图片描述

  1. 创建D:\gitee_hello_java
  2. 执行克隆指令

在这里插入图片描述

  1. 克隆成功
    在这里插入图片描述

IDEA 项目使用Git 管理

需求1-说明

将gitee 创建的wyxjava 项目拉取到IDEA,进行管理

需求1-实现步骤

界面操作

  1. 将Gitee 初始化wyxjava,拉取到IDEA

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 创建一个crm 模块,进行测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 创建HI.java, 进行测试

在这里插入图片描述

  1. 将HI.java add 到git, 说明:将HI.java 加入到暂存区
    在这里插入图片描述

  2. 将HI.java commit 到git
    ​ commit 只是将HI.java 提交到本地仓库
    ​ 并没有push 到远程仓库(即GitHub/Gitee)

在这里插入图片描述

  1. 将HI.java push 到Gitee , 会输入用户名密码验证(是Gitee 的账号).

在这里插入图片描述

  1. 观察Gitee 上项目的变化

在这里插入图片描述

也可以使用命令行完成

● 操作指令

测试: 创建一个新文件OK.java
在这里插入图片描述

看下Gitee 项目的变化,会与新的push 文件

在这里插入图片描述

需求2-说明

创建了一个IDEA 项目(没有从Gitee 拉取), 后面又希望和Gitee 的某个代码仓库关联,如何操作?

需求2-实现步骤

界面操作

  1. 在Gitee 创建一个仓库,比如wyx-sns

在这里插入图片描述

在这里插入图片描述

  1. 创建一个springboot /maven 项目wyx-sns
  2. 克隆gitee 的wyx-sns 到d:/git-wyx-sns

在这里插入图片描述

  1. 将克隆下拉的wyx-sns 的文件,拷贝到IDEA 对应项目中

在这里插入图片描述

  1. 刷新,或者重启IDEA 项目

在这里插入图片描述

  1. 创建文件Hello.java
public class Hello {
public static void main(String[] args) {
		System.out.println("xxx");
	}
}
  1. 完成add, commit , push 一系列操作

在这里插入图片描述

  1. 观察gitee 上项目的变化
    在这里插入图片描述

也可以使用命令行完成

如何查看操作记录

示意图

在这里插入图片描述

GIT 分支管理

介绍

一个分支实例

项目地址https://gitee.com/ZhongBangKeJi/CRMEB-Min

在这里插入图片描述

分支合并示意图

在这里插入图片描述

  1. 分支可以有多个(根据业务需求)
  2. 如果各分支没有交集,始终平行发展,则不需要合并(merge)
  3. 如果两个分支,需要合并,则执行merge 操作

创建IDEA Maven 项目, 和Gitee 的wyx-erp 代码仓库关联

  1. 先在Gitee 创建仓库wyx-erp, 并设置成开源
  2. 在新的目录比如d:/idea_projects 使用idea 创建wyx-erp maven, 并和Gitee 仓库wyx-erp关联, 前面已经讲过了,可以去看看
  3. 创建文件wyxErpApplication.java , 写入一些内容
  4. 将wyxErpApplication.java push 到Gitee 远程仓库, 执行add->commit->push
  5. 观察Gitee 远程仓库是否已经push 成功

git 分支指令

地址: https://gitee.com/all-about-git

指令一览

# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

应用实例

需求:克隆wyx-erp 仓库, 创建分支v1.0, 并提交到远程仓库

指令操作演示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

IDEA 项目创建分支

  1. 创建分支

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 把分支同步到Gitee 远程仓库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 查看远程仓库

在这里插入图片描述

IDEA 项目切换分支, 进行工作

  1. 切换分支(指令checkout)

在这里插入图片描述

在这里插入图片描述

  1. 在v2.0 分支下, 我们修改/增加一下文件, 就是针对当前v2.0 的
    在这里插入图片描述

  2. 把wyxErpApplication.java Add->Commit->Push 到Remote 仓库, 按照老师步骤来.

执行Add

执行Commit

执行Push

在这里插入图片描述

  1. 观察Gitee 的远程仓库变化

在这里插入图片描述

  1. 观察本地仓库版本切换的变化

在这里插入图片描述

在这里插入图片描述

IDEA 项目分支合并, 没有冲突的情况

● 在进行分支合并时, 如果没有冲突(比如没有修改同一个文件), 这时会比较顺畅.

  1. 案例演示/需求说明: 将分支v3.0 合并到Master 主分支
  2. 从master 开一个分支v3.0, 在v3.0 增加一些文件, 不在master 和v3.0 修改同一个文件
  3. 将分支v3.0, 同步到Gitee 远程仓库, 操作步骤和前面一样开v2.0 一样.

在这里插入图片描述

在这里插入图片描述

切换到v3.0, 并增加一个文件Hi.java, 并Add->Commit->Push 到远程仓库

在这里插入图片描述

在这里插入图片描述

注意看Master 主分支,在本地仓库和远程仓库, 都没有Hi.java

在这里插入图片描述

在这里插入图片描述

将v3.0 合并到Master 分支, 注意当前是Master 主分支(看图标)

在这里插入图片描述

在这里插入图片描述

注意看Master 主分支,这时在本地仓库, 有Hi.java , 但是远程仓库还没有

在这里插入图片描述

在这里插入图片描述

将本地的Master 分支, Push 到远程仓库, 这时观察远程仓库Master 下也有HI.java 了
在这里插入图片描述

在这里插入图片描述

IDEA 项目分支合并, 有冲突的情况

接受某一方, 解决冲突

● 如果同一文件在合并分支时都被修改了则会引起冲突, 修改冲突文件后重新提交(说明:这时要决定保留哪个分支代码)

  1. 案例演示/需求说明: 将分支v3.0 合并到Master 主分支
  2. 切换到v3.0, 修改wyxErpApplication.java

在这里插入图片描述

  1. 把wyxErpApplication.java 进行Add->Commit->Push 操作(如果已经Add 过, 就不需要Add),

  2. 切换到Master, 也修改一下Master 的wyxErpApplication.java , 同样进行Add->Commit->Push (如果已经Add 过, 就不需要Add) 操作.

  3. 将V3.0 合并到Master

在这里插入图片描述

在这里插入图片描述

  1. 出现冲突
    在这里插入图片描述

在这里插入图片描述

  1. 观察本地的Master 分支的wyxErpApplication.java , 已经和V3.0 一致了, 但是远程仓库的Master 还是没有变化, (原因Master 分支还没有Push)

在这里插入图片描述

在这里插入图片描述

  1. 再将Master Push 到Gitee 远程仓库, 就会看到相应的变化(注意在Push 前, 请确认要Push 的文件/文件夹是已经Committed, 否则你看不到变化.)
    在这里插入图片描述

手动修改,解决冲突 也有一样的

IDEA 项目删除分支

彻底删除某个分支

  1. 如果某个分支不需要了, 可以删除, 一定要慎重

在这里插入图片描述

在这里插入图片描述

  1. 注意观察远程仓库, 分支V3.0 也没有了
    在这里插入图片描述

只删除本地分支, 还可以重新获取

注意事项和细节说明

  1. 如果同一文件在合并分支时都被修改了则会引起冲突, 修改冲突文件后重新提交(说明:这时要决定保留哪个分支代码)
  2. Master 主分支应该非常稳定,用来发布新版本,一般情况下不要在上面工作,工作一般在新建的分支(比如dev、v1.0、v2.0)上工作
  3. 分支代码稳定后,可以合并到主分支Master
  4. 在进行分支合并时, 最好是各分支都已经处于Committed 的状态, 这样可以减小处理合并冲突的难度.
  5. Push 操作, 是Push 你已经Committed 的代码, 如果你修改了一个文件, 但是你没有执行Commit ,那么你Push 的其实是上次Committed 的状态
  6. add 、commit 、push 的操作可以针对单个文件, 也可以针对文件夹(可以看一下Idea的git 操作菜单)
  7. 文件要Commit 前需要先Add 到暂存区, 以后文件修改了, 就可以直接Commit
  8. 如果要删除文件, 可以在本地删除该文件, 然后commit 文件所在文件夹即可, 并重新push 该分支, 那么在远程仓库, 也会删除对应分支的文件.

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

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

相关文章

高性能网络应用框架

技术主题 Netty从本质上讲是一个高性能网络应用框架,之所以说是高性能,依赖于Netty的线程模型。 一网络编程性能的瓶颈 BIO 模型里, read() 操作和 write() 操作都会阻塞当前线程的,如果客户端已经和服务端建立了一个连接&…

【基于IMX6ULL驱动开发学习】01.安装交叉编译环境【附下载地址】

第一步(下载工具链): 从官网上下载交叉编译工具链 https://snapshots.linaro.org/gnu-toolchain/ 按照以下步骤选择 可以选择最新的(我也忘记我用的哪个版本了,都可以用问题不大) 第二步(…

chatgpt赋能python:Python库函数:提高开发效率的利器

Python库函数:提高开发效率的利器 Python作为一门高级编程语言,被广泛应用于 Web开发、科学计算、机器学习、数据分析等领域。它的可读性强、语法简单、库函数丰富是其广受欢迎的原因之一。本文将带您了解Python库函数的优势并介绍几个常用的库函数。 …

大型语言模(LLM) 之 提示词工程(三)

今天我学习了DeepLearning.AI的 Prompt Engineering 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。以下是我写的关于该课程的前两篇博客: 大型语言模(LLM)之提示词工程(一) 大型语言模(LLM)之提示词工程(二) 今天我们来学习第三部分内容…

【express模块】课程笔记

目标: express.static()快速托管静态资源express路由精简项目结构常见express中间件使用express创建API接口在express中启用cors跨域资源共享 目录 一. 初识Express 1.1 Express简介 1. 什么是express 2. 进一步理解Express 3. Express能做什么 1.2 Express…

聊聊那些奇葩的代码规范 —— 滥用 lombok

因为有些要求感觉实是太过奇葩,收集下来娱乐下大家。 代码规范要求 在所有无参数构造函数,全参数构造函数,Getter 和 Setter 方法必须要使用 Lombok。 所有的 Builder 方法也必须要用 Lombok。 简单来说是就是 Lombok 没有提供的才可以使用…

《统计学习方法》——逻辑斯谛回归与最大熵模型(上)

引言 逻辑斯谛回归(logistic regression)是统计学习中的经典分类方法。最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy model)。 由于后面最优化方法中用到了最优化理论中的一些知识,建议先阅读最优化简介。 逻辑…

chatgpt赋能python:Python开发环境的安装方法

Python开发环境的安装方法 Python已经成为了当今最流行的编程语言之一,它易于学习和使用,而且庞大的社区提供了大量的资源和库。那么,如果你是一位Python初学者或新手,本篇文章将为您介绍如何安装Python开发环境。 Python环境的…

技巧:win10的另一种美化字体的方式,使用noMeiryoUI

目录 1. 前提2. 字体选择3. 查看已经安装的字体并查看效果4. 安装软件修改系统字体5. 修改浏览器字体 1. 前提 21年的时候写了一篇文章,《Windows10下美化字体,达到类似mac的效果》,当时还很迷恋macType这个软件的使用,觉得好牛逼…

DAY11——栈与队列part2

双端队列Deque——Double ended Queue 插入和删除为O(1), 查询为O(n) 使用Deque - 廖雪峰的官方网站 (liaoxuefeng.com) Priority Queue 优先级队列 插入操作 O(1) 取出元素O(logN)——按照元素的优先级取出 底层数据结构为heap,bst... 题目一 最近相关性——使…

《Reinforcement Learning: An Introduction》第3章笔记

Chapter 3 Finite Markov Decision 本章正式介绍有限马尔科夫决策过程(finite Markov decision processes, finite MDP), 它包括第二章介绍的评估性反馈和关联(associative)—在不同情景下选择不同的状态。 MDP是序贯决策问题的经典形式化表达,它的动作…

【玩转Linux操作】硬链接和软连接

🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 欢迎大家访问“在下小吉.”(偷偷告诉你这个是我的大号哦&#…

创客匠人5月活动总结

为了帮助老师做好知识变现、拓客增长,让好老师走进千万家,让知识创造价值,五月,创客匠人组织了一系列线上线下干货满满的赋能活动! 一、老蒋商业变现营线上 5月10日-5月14日,在线上举办了首期【老蒋商业变现…

C++作业day1

思维导图 有以下定义,说明哪些量可以改变哪些不可以改变? const char *p; p指向的指向不能修改 const (char *) p; char *const p; p不能改 const char* const p; 都不能修改 …

Python对接亚马逊电商平台SP-API的一些概念理解准备

❝ 除了第三方服务商,其实亚马逊卖家本身也可以通过和SP-API的对接,利用程序来自动化亚马逊店铺销售运营管理中很多环节的工作,简单的应用比如可以利用SP-API的对接,实现亚马逊卖家后台各类报表的定期自动下载以及数据分析整理工…

分享两个小众的办公软件

01 Apache OpenOffice是一款开源办公套件软件,主要用于文档处理、电子表格、演示文稿和数据库管理等方面。它包括Writer、Calc、Impress、Draw和Base五个组件。 Writer是Apache OpenOffice的文本编辑器,可用于创建各种类型的文档,如信函、报…

四、文字到语音模型库之Bark

随着人工智能技术的发展,文本到音频(Text-to-Audio,简称 TTA)转换已经成为一个热门的研究领域,旨在通过深度学习模型将任意文本转换为逼真的音频,包括语音、音乐、声效等。近日,一家名为 Suno 的公司在 GitHub 上开源了一个名为 Bark 的 TTA 模型,引起了广泛关注。Bark…

Java stream多字段分组(groupingBy)

近期的项目里&#xff0c;遇到一个需求&#xff1a;对于含有多个元素的List<Person>&#xff0c;按照其中的某几个属性进行分组&#xff0c;比如Persion::getAge、Persion::getType、Persion::getGender等字段。下面就让我们讨论一下如何比较优雅的按多字段进行分组group…

vue3 使用element plus 打包时 报错

vue3vitetselementPlus中运行正常打包出错 能正常运行&#xff0c;但是打包出错 解决打包时出现导入element plus相关的爆红&#xff0c;导致无法打包的问题 如若出现类似于&#xff1a;Module ‘“element-plus”’ has no exported member ‘ElMessage’. Did you mean to …

使用Fiddler进行Mock测试的原理和方法

叨叨在前&#xff1a;之前工作中&#xff0c;做的纯接口测试&#xff0c;当时公司有自己的Mock平台&#xff0c;可以进行接口Mock测试。后来离开公司后&#xff0c;再想做Mock测试&#xff0c;就只能使用开源工具&#xff0c;或者自己用Flask写Mock了。今儿整理一下&#xff0c…