Git的学习与使用

1 介绍

Git 是一个版本控制工具。可以记录和追踪 某个文件 在某一个时刻的内容和状态。

Git 可以 记录某个文件夹下的 不同文件 在不同时间节点的不同状态。Git可以去记录这些文件产生的变化

Git的特点:

  • 分布式
  • 离线可用
  • 可以回退

Git和SVN的对比

  • Git:分布式版本控制工具
  • SVN:集中式版本控制工具

在这里插入图片描述
image-20220526111920966

2 安装Git

2.1 下载

Git官网官方下载地址

2.2 安装

直接傻瓜式安装即可。在这里插入图片描述安装的时候,要注意 让Windows 记住登录凭证

3 Git的使用

3.1 Git核心流程

image-20220526113143360

3.2 Git 命令

3.2.1 注册相关网站

以Gitee为例。

  • 记住注册的时候 使用的
    • 用户名(推荐使用英文)
    • 密码
    • 手机号
    • 邮箱(可以注册后自行设置)

密码一定要记得。

3.2.2 建立远程仓库

在这里插入图片描述

3.2.3 clone

把远程仓库,克隆到本地。(一定是第一次)

.git文件夹,是git自己的元信息的一个文件夹,大家不要动。

# 下载远程仓库的内容,并且在本地创建一个和远程仓库名同名的文件夹
git clone https://gitee.com/common-zhou/xxxx.git

# 克隆远程仓库,到本地,文件夹的名字叫做  test53th1。如果文件夹不存在,会创建一个。
# 如果文件夹存在,会使用这个文件夹。(有个前提,一定是空的。如果不是空的,会报错)
git clone https://gitee.com/common-zhou/xxxx.git test53th1

git clone https://gitee.com/ciggar/xxxx.git dirName

在git中管理文件的版本,需要使用文本文件。

.txt .md ; 不要使用docx pptx

在git中,对比文件的变化,是一行一行来进行比较的。所以我们需要追踪文本文件,docx是类似压缩包的文件,没有办法对比每一行。

3.2.4 status

这个命令可以帮助我们查看工作区和缓冲区中的变化。

工作区中的变化

缓冲区中的变化
在这里插入图片描述

3.2.5 add

这个命令可以帮助我们把工作区中的变化提交到缓冲区。

# 有以下的三种提交方式

# 文件的名字
git add fileName

# 文件的类型,通配符添加
# 只添加 .java文件结尾的文件 。从工作空间提交到缓冲区
git add *.java

# 所有文件
git add .

3.2.6 commit

commit这个命令可以帮助我们把git仓库中 缓冲区中的内容提交到本地仓库。

第一次提交的时候,需要设置 用户名和邮箱

有两种设置的方式

  • 直接去用户目录下,设置 .gitconfig 这个文件,假如没有这个文件,就创建一个
[user]
	name = ciggar
	email = xxxxxxxx@qq.com
  • 执行命令去设置
git config --global user.email 222@qq.com
git config --global user.name xxx

设置完之后,就可以提交了,会产生一个版本信息

这一步需要大家注意几件事情:

  • 这一步会产生一个文件的版本号,只是前7位。
  • 如果是第一次commit,需要设置用户名和邮件地址
  • 只会把缓冲区中的变化提交到本地仓库,不会把工作区中的变化提交到本地仓库
  • commit的时候需要指定提交的信息,提交的信息一般要去设置模板
# 提交
git commit -m "msg"
## msg:msg信息一般要有统一的格式 例如:描述信息 (issue号)
# 1.描述信息 (issue号)
# 2.(issue号) 描述信息

git commit -m "某某bug的修改"
git commit -m "HashMap的练习"

# 尽量做到,见到描述信息可以知道这次提交是干什么的。
  • 设置完之后,就可以提交了,会产生一个版本信息
    image-20220526145749580

3.2.7 push

image-20230111111257900push这个命令可以帮助我们把本地仓库中的所有变化 推送到远程仓库。

  • 这一步在第一次操作的时候,需要去填写对应用户名和密码

image-20220526150144318

push的时候,能不能指定文件去 push呢? 不能

只有当本地仓库中的版本领先于远程仓库的时候,才可以push

3.2.8 pull

会拉取远程仓库中的所有的变化到本地。并且会显示出版本号
image-20220526151312030

当本地仓库中的版本落后于远程仓库的时候,就要pull
“ 落后就要pull”

3.2.8 log

查看仓库中的所有的版本信息
image-20220526151518200

3.3 协作开发

3.3.1邀请成员加入仓库

不管是 开源的仓库,还是私有的仓库,都是 只有仓库中的成员才能去修改仓库中的代码。

  • 开源:所有人都可以访问到
  • 私有:只有仓库指定的成员才能看到

3.3.2 处理冲突

模拟冲突处理流程:
image-20220526162705623

总结:

  1. 先push的人不处理冲突,后push的人要处理 冲突
  2. 和组员一起开发的时候,尽量不要开发同一个文件,很容易产生冲突
  3. push之前最好先pull一下,不然可能会push失败
    • 早上上班之后,第一件事情,拉取最新的代码(pull)
      晚上下班之前,最后一件事情,把最新的本地代码推送上去(push)。代码一定要能编译通过有没有bug无所谓。

Vim怎样使用

1.点击i 表示是编辑。才能输入
2.保存的时候,怎么保存呢?
 点击esc; 输入一个冒号  shift+: (英文状态下) ; 输入wq(保存并退出)

冲突处理

<<<<<<<< HEAD
    
===============
 
>>>>>>>>> fgfskljasdljdlkasjksalk
    
    
// 左到=。就是你自己的代码版本   <<<<<<<<<       -->        ============
    // =到>  是远端的版本      =========       -->        >>>>>>>>>>>>
    
需要告诉git,如果保留代码。 比如是留你的版本,还是留你同事版本。 
 1.留代码
 2.删除分隔符
 3. 处理好所有的冲突之后, git  add . ;  git commit -m "处理和同事1的冲突"
 4. push 。 需要抓紧push,防止别人又push了代码  

冲突分两种情况:

1.两次提交。修改了不同的文件: 这个是git可以帮我们处理这个问题。 git会保存最新的代码,比如一个人修改了 1 3 5 ; 另一个提交修改 2 4 7 。 最后,保存最新的 123457这些信息即可。 git需要我们输入一个信息, 会直接进入vim界面。你在这个界面输入提交信息, wq。

2.两次提交,修改了相同的文件。 这时候,git没有办法帮我们处理。我们需要手动处理。需要决定留哪一份,或者合并全留。

如果不知道我们同时修改了哪个文件: 可以用 git status 。

add commit .

3.4 后悔药

Git给我们提供了一些可以回退的措施,也叫作后悔药。
image-20220526163624301

  • git checkout

需要指定需要回退的文件

$ git checkout text.txt
$ git checkout .

这个命令,危险吗? 危险!慎用

注意:回退的内容,是找不回来的,要慎用。比如你写了一天的代码,都是在工作区的。

  • git reset

把缓冲区中的变化,回退到工作区。注意:git reset不会改变文件中的内容
问题:能不能指定文件reset呢? 能

  • git reset --hard version

就指的是版本号。 我们每一次commit都有一个版本号
image-20220526171556679

3.5 忽略文件

git在做版本控制的时候,可以让我们忽略一些文件,不去追踪这个仓库中这些文件的变化。

怎么做呢?

  • 可以在Git仓库的根目录下 添加 一个 .gitignore 这个名字的文件,可以在这个文件中声明哪些文件不被git追踪版本信息

对于Java项目来说,我们可以忽略哪些内容呢?

# 单个文件
xxx.txt

# 配置文件夹
.idea

# 配置文件的类型
*.iml

target/*.class

*.class
# 就是让git忽略一些文件。 不要去追踪这些文件。 比如class文件
# 一些私密信息(密码)这些不要让git管理。 

# 代表我不想让其追踪  4.txt的文件
4.txt

# 这个就是代表我想忽略 target文件夹
target/

# 一定要注意,如果git已经追踪上了。再添加到.gitIgnore文件里面,无效。
1.txt

# 比如,现在就是想忽略掉1.txt。 怎么办?
# 把1.txt剪切换一个位置 ;    add  commit ;1.txt文件拷贝回来。  这样我们就可以忽略掉这些文件。 

注意事项:

  1. 忽略文件最好是在创建这个远程仓库的时候,就应该自动创建出来
  2. 一旦一个文件已经被追踪并且提交到远程仓库中去了,那么再在.gitignore 这个文件中去忽略它的变化,是无效的

4 分支管理

在Git中,每个分支都代表着仓库中的一个完整版本,并且可以在分支上进行独立的开发和提交。
使用分支的好处是可以让多个人在同一个仓库中同时进行开发,不会相互干扰,同时也可以随时回到之前的某个状态进行修复或重新开发。当一个分支的开发完成后,可以将其合并到主分支或其他分支上。

Git默认创建一个主分支,通常称为“master”或“main”,其他分支可以基于主分支或其他分支创建,每个分支都有一个唯一的名称。在开发过程中,可以在不同的分支之间进行切换,以便进行不同的工作。例如,可以创建一个分支来解决某个bug,同时在另一个分支上开发一个新的功能,而不会影响彼此之间的工作。

分支操作

# 查看所有分支
$ git branch

# 创建分支并切换 iss53
$ git checkout -b iss53

# 切换分支
$ git checkout iss53

# 合并分支
$ git merge iss53

# 将远端的dev-test1分支拉取到本地
git fetch origin dev-test1

工作过程中的一般使用步骤

#  一般会有一个master 主分支
#  会有一个dev分支

# 1. 如果有需求,会从dev拉一个分支,比如 dev-feature1,所有的提交都提交在这个分支上
# 1.1 从dev拉取一个分支,并切换到这个分支
git checkout -b dev-feature1

# 2. 等到开发完成,会把这个分支合并到dev。 dev经过测试,会合并到master
# 2.1先切换到dev分支
git checkout dev 

# 2.2合并刚刚的分支
git merge dev-feature1

不认识的命令,不要随意去执行。

# 强制删除根分区
sudo rm -rf / 
# 将本地仓库强制push到远程仓库
git push -f 

5 在idea上进行git操作

首先配置好git路径
idea配置git.png
点击Test有版本。

如果项目被git追踪了,则idea中会有对应的颜色提示。

红色代表是新增的文件

蓝色代表是文件有改动

绿色代表已经提交。其他的操作与git基本操作一致。

在文件中,可以看到文件的变动idea中git的提示.pnggit可以右键,然后add commit 提交信息。

6 常见问题

如果在git配置中报错fatal: Authentication failed for ‘’,其实就是凭证失败的意思

解决办法如下:凭证失败解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值