初学者应该怎么学git-下

简介: 初学者应该怎么学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 该分支, 那么在远程仓库, 也会删除对应分支的文件.


目录
相关文章
|
21天前
|
存储 缓存 安全
git 进阶
【10月更文挑战第4天】 git 进阶
|
6月前
|
安全 开发工具 git
初学者应该怎么学git-上
初学者应该怎么学git-上
88 0
|
6月前
|
程序员 开发工具 git
好程序员Git入门到精通教程
本课程主要通过命令行和idea来介绍Git的安装、仓库创建、工作流、远程仓库、克隆仓库、标签管理和分支管理等Git的主要内容。 另外关于GitHub的使用介绍也有完整的说明和使用,接轨生产环境使用方式。
41 1
好程序员Git入门到精通教程
|
Shell 网络安全 开发工具
一些常用的 Git 进阶知识与技巧
一些常用的 Git 进阶知识与技巧
77 0
|
缓存 安全 程序员
程序员都需要知道的Git。
程序员必须会的技能哦,快来看看吧。
161 1
程序员都需要知道的Git。
|
开发工具 git
Git - 入门到熟悉_分支管理
Git - 入门到熟悉_分支管理
75 0
|
存储 Linux Shell
手把手教你用Git——Git使用教程(一)
Git 是一个开源的分布式版本控制系统,可以有效、快速的进行项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
560 0
手把手教你用Git——Git使用教程(一)
|
安全 Ubuntu Linux
Git快速上手, 理解学习
Git快速上手, 理解学习
Git快速上手, 理解学习
|
Shell 开发工具 git
关于Git,这篇文章还不够吗?
关于Git,这篇文章还不够吗?
|
安全 Java 网络安全