初学者应该怎么学git-下

news/2024/4/27 13:15:51 标签: git, github, linux, 运维, 服务器

git_0">初学者应该怎么学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__340">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.niftyadmin.cn/n/409368.html

相关文章

vue中的计算属性和侦听器

目录 计算属性使用计算属性只读计算属性可写计算属性 计算属性的缓存 侦听器使用侦听器侦听不同的数据源深度侦听直接给 watch() 传入一个响应式对象使用deep 选项,强制转成深层侦听器 立即侦听watchEffect()watch 和 watchEffect的区别 计算属性和侦听器的异同点相…

【webFlux】zipWithIterable()判断是否有空值以及未与iterable 匹配时设置默认值

判断是否有空值 在使用zipWithIterable()方法时,如果Iterable集合为空,那么zipWithIterable()方法会返回一个空的Flux流。如果Flux流为空,那么zipWithIterable()方法也会返回一个空的Flux流。 如果Iterable集合中有null元素,那么…

C++基础(三) —— STL组件

文章目录 一、C STL standard template libaray 标准模板库 1.顺序容器 vector: 底层数据结构:动态开辟的数组 扩容方式:每次以原来空间大小的2倍进行扩容 具体过程: 当需要在 std::vector 中插入元素时,如果当前容量…

网络通信 --- HTTP 协议初识

目录 🌲一、HTTP 协议是什么 🌳二、HTTP协议格式 🦪1.抓包工具的使用(以 Fiddler 为例) 🍣2. 抓包工具的原理 (以 Fiddler 为例) 🍤3. 抓包结果 🍥① HTTP 请求(request) 🥮②HTTP响应(re…

【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第20套

少儿编程 蓝桥杯青少组科技素养题真题及解析第20套 1、“唐纳德特朗普 (Donald Trump) 曾经是美国总统”是一个 (),“特朗普关于新冠肺炎疫情的不实言论”是一个 ()。 A、事实;事实 B、观点;事实 C、观点;观点 D、事实;观点 答案:D 考点分析:主要考查小朋友们对时事的…

模板方法设计模式的学习和使用

1、模板方法设计模式的学习 当涉及到一系列具有相似行为的算法或操作时,模板方法设计模式是一种有效的设计模式。它允许你定义一个算法的骨架,同时将某些步骤的实现细节交给子类来实现。   模板方法模式基于以下两个核心原则: 抽象类定义模板方法骨架&#xff1a…

chatgpt赋能python:Python屏幕截图:完美的方法记录你的屏幕

Python屏幕截图:完美的方法记录你的屏幕 Python作为一种高级编程语言,被广泛用于开发各种应用程序和游戏,其中之一就是屏幕截图。 在本文中,我们将介绍使用Python进行屏幕截图的方法和技巧。 什么是屏幕截图? 屏幕截…

宝塔反代教程+国内服务器访问openai api接口+502 Bad Gateway问题解决!

前言 宝塔反代教程国内服务器访问openai api接口502 Bad Gateway问题解决! 此方法最简单快捷,没有复杂步骤,不容易出错,即最简单,零代码、零部署的方法。 实现前提 一台海外VPSOpenAI官方的API_KEYChatGPT网站系统源码 ChatGP…