Gitee保姆级教学

1.引言

  • 在单人开发过程中,需要进行版本管理,以利于开发进度的控制。

  • 在多人开发过程中,不仅需要版本管理,还需要进行多人协同控制。

2.介绍

  • Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  • Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  • 官网:https://git-scm.com/

  • 其实市面上有其他的版本管理工具,例如SVN

3.Git安装

  3.1下载

        https://git-scm.com/downloads

3.2安装

      安装,除了安装位置外,其他一直下一步即可

      使用

  • 使用cmd打开操作

  • 使用git自带命令行

3.3基本配置

  • 安装后,打开命令行 ,自报家门

  • 如下信息会在提交代码时要使用,记录在你的每次提交中。以后才知道哪次提交是谁做的。

git config --global user.name "Your Name"  #用户名
git config --global user.name "qiushiju"
git config --global user.email "email@example.com"  #邮箱
git config --global user.email "237876779@qq.com"
# 查看信息
git config -l

3.4测试

     测试:cmd中执行 ,查看git版本

git version

4.架构

  • 版本库:工作区中有一个隐藏目录 .git,这个目录不属于工作区,而是git的 版本库,是git管理的所有内容

  • 工作区: 就是存放工作内容(代码,文件等)的文件夹

  • 暂存区:版本库中包含一个临时区域,保存下一步要提交的文件。

  • 分支:版本库中包含若干分支,提交的文件存储在分支中

                                                                    架构图

git主要目的是: 版本控制,协同开发
git管理主要的是 正在开发的资料(文档,代码等)
git如何管理这些代码?如何记录这些版本信息?
 git是在本地创建了git仓库,仓库中有我们的代码
          还有git记录变化的配置文件
		  
如何才能将我们写的,变化的代码让git记录到?
需要 git add 文件, 将变化的代码添加到暂存区
     git commit	-m "日志",将暂存区的代码提交到仓库

5.仓库

对应的就是一个目录,这个目录中的所有文件被git管理起来。

以后会将一个项目的根目录,作为仓库。

仓库中的每个文件的改动 都由git跟踪。

  5.1新建仓库

  选择一个目录,执行指令:git init()

5.2工作区

执行git init的目录即为工作区,如上例,D:\repo1目录即为工作区【不包含.git目录】

所有文件,都首先在工作区新建,然后可以存入仓库(版本库),进行版本控制。

5.3暂存区

暂存区也在 .git 目录内,工作区的文件进入仓库时,要先进入暂存区。

5.4分支

版本控制,简单说,就是记录文件的诸多版本,分支就是这些版本的最终记录位置。

6.基本操作

6.1查看仓库状态

执行 git status 可以看到工作区中文件的状态

                                        未记录过的文件,是未跟踪状态

6.2暂存文件

执行 git add . 将工作区中的文件全部存入暂存区

                                                 将工作区的文件存入暂存区

6.3提交文件

执行 git commit -m "这里写提交的描述信息" 作用是将暂存区的文件存入分支,形成一个版本

6.4 撤销已经add的文件

有一个文件,已经执行了git add 提交到暂存区,此时可以使用命令撤销

之前没有一次commit过,要撤销add后的文件 使用git rm --cached 文件名

之前commit过已经形成分支,再撤销add后的文件 使用git restore --staged 文件名

之前commit过,再撤销add后的文件 使用git restore --staged 文件名

# 从未commit过,使用这个命令从暂存区撤销
git rm --cached <file>...  

# 如果以前已经commit过,使用这个命令 撤销已经add的文件
git restore --staged 文件名

6.5撤销已经commit的文件

文件已经commit也可以回退,这种回退叫版本回退,两种方案

  • git reset

  • git revert

git reset
  • git log查看版本号

  • git reset

    • git reset [--soft | --mixed | --hard] 版本号

    • 默认是mixed

    • mixed:回退到指定版本后,该版本之后的修改放在工作区,没有放在暂存区,即回退了commit和add操作

    • soft:回退到指定版本后,该版本之后的修改放在暂存区,即回退了commit操作

    • hard:回退到指定版本后,该版本之后的修改都会删除

git reset HEAD^    #回退到上一个版本,windows系统,^有特殊意思,HEAD^需要使用双引号
git reset HEAD^^   #回退到上上一个版本
git reset HEAD~    #回退到上一个版本
git reset HEAD~2   #回退到上上个版本,~ 后面的数字表示回退几次提交,默认是一次
git reset db65e3   #回退到指定的版本号的提交

# 回退到上一个版本
git reset --mixed HEAD~
git reset --soft HEAD~
git reset --hard HEAD~
git revert
  • git revert

    • 通过该命令可以撤销某次提交,撤销提交时,原来的提交记录还会保留(但是当次的文件内容会删除),同时会生成一个新的提交,并且需要写这次撤销的日志

    • 如果revert时,不想自动生成新的提交,可以使用-n选项,比如 git revert -n head

git revert head  撤销最近一次的提交
git revert head~ 撤销上一次的提交
git revert 735fd(版本号)
git revert 这个命令执行后,会进入一个编辑器,让写撤销日志
自动生成了部分日志,#部分是注释
按dd 删除一行
按键盘 i ,进入编辑状态
写完,按esc
再按 :wq ,意思是保存并退出

6.6 revert和reset的区别

  1. Git revert:Git revert命令用于撤销之前的提交,但是通过创建一个新的提交来反转先前的提交,而不改变Git仓库的历史记录。也就是说,它会创建一个新的提交,将先前提交的更改全部撤销掉。这个新的提交会包含对旧提交的撤销操作,因此历史记录中会保留撤销了的更改。

    使用Git revert时,需要指定要撤销的提交的引用或提交哈希值(版本号)。Git会自动生成一个新的提交。因此,Git revert是一种安全的方法来撤销错误的提交,并保留所有的修改历史记录。

  2. Git reset:Git reset命令用于将HEAD指针和当前分支的指针重置到指定的提交,从而改变Git仓库的历史记录。它可以用于撤销提交、删除提交、合并分支等操作。

    Git reset有三个主要的模式:--soft、--mixed(默认)和--hard。--soft模式将HEAD指针和分支指针重置到指定提交,但不修改工作目录和暂存区,可以用来撤销最后的提交。--mixed模式不仅重置HEAD和分支指针,还重置了暂存区,但不改变工作目录的文件内容。--hard模式是最彻底的,它会丢弃所有未提交的更改,包括暂存区和工作目录的修改。

    使用Git reset时,需要指定要回退到的提交的引用或提交哈希值(版本号)。根据使用的模式不同,Git会将HEAD和分支指针移动到指定提交,并可能修改暂存区和工作目录。

总结起来,Git revert是通过创建一个新的撤销提交来撤销之前的提交,保留历史记录;而Git reset是通过改变HEAD和分支指针的位置来修改历史记录,可能会删除或修改提交。选择使用哪个命令,取决于你需要保留历史记录还是改变历史记录,并且是否需要保留之前提交的更改

7.分支

7.1分支简介

  • 分支,是一个个版本最终存储的位置。

  • 分支,就是一条时间线,每次git commit形成一个个版本,一个个版本依次存储在分支的一个个提交点上。

  • 可以通过命令

git log --oneline --graph
  • 查看提交的节点图

  • 为什么需要分支?

    • 主分支是稳定的代码,当我们需要开发

      • 新的功能

      • 紧急处理bug

      • 等等其他开发需求时

    • 就要开分支

分支有多个节点提交组成,分支上会有一个指针,默认总是指向最新的提交点

7.2分支操作

7.2.1查看分支
  • 查看当前仓库的分支 git branch

  • 仓库中默认只有 master 分支

  • 执行git commit时,默认是在master分支上保存版本。

7.2.2创建分支
  • 在商业项目开发过程中,我们不会轻易的在master分支上做操作。

  • 我们会新建一个开发用的分支,在此分支上做版本的记录。

    当代码确实没有问题时,才会将开发分支上成熟的代码版本添加到master分支上。

  • 保证开发过程中,可以及时记录版本,又保证master分支上每个提交点都是稳健版本。

  • 创建分支

git branch 分支名

7.2.3切换分支
  • 默认情况下,当前使用的分支是 master分支

  • 可以切换到 dev分支(git checkout dev),则后续的git commit 便会在dev分支上新建版本(提交点)

7.3新建分支细节

新建分支时,新分支,默认有哪些内容?分支中包含了哪些次提交?

新分支,默认有哪些内容?新分支==拥有之前分支的全部内容==

7.3.1新分支初始内容

每个分支都有一个指针,新建一个分支,首先是新建一个指针

而且新分支的指针会和当前分支指向同一个提交点

新分支包含的提交点就是从第一个提交点到分支指针指向的提交点。(内容一样)

7.3.2多分支走向

在master分支和新分支,分别进行 git addgit commit

分支情况如下图:

                                master分支未动,在dev分支增加一次commit

                                master分支增加一个commit,dev分支再增加一个commit

7.3.3分支提交日志

查看分支的提交日志,进而看到分支中提交点的详细情况。

git log --oneline --graph

7.4分支合并

两个分支内容的合并

git merge 分支a 合并分支a

合并前,分支状态

三方合并,将23的更改都累加在1上,形成新的提交点

7.5合并冲突

两个分支进行合并,但它们含有对同一个文件的修改,则在==合并时==出现冲突,git无法决断该保留改文件哪个分支的修改。

7.5.1 冲突演示

模拟冲突

dev分支修改hig.txt

在master分支 合并 dev分支

此时,打开hig.txt 文件:

7.5.2解决办法

出现冲突后,如要由两个开发人员当面协商,该如何取舍,为冲突文件定义最终内容。

解决方案:

  1. 保留某一方的,删除另一方的

  2. 保留双方的

  3. 但无论如何,要记得删除 <<<< ==== >>>> 这些

  4. 本质是两人==协商==为冲突的内容,定制出合理的内容。

  5. 修改完,继续git add /git commit

7.6日志

每次commit都会在分支上形成新的提交点,通过日志可以看到提交的信息

git log

也可以以图形的形式查看提交树

git log --oneline --graph

7.7 删除分支

git branch -d 分支名

8.远程仓库

第5章中的仓库,其实是本地仓库。

当多人协同开发时,每人都在自己的本地仓库维护版本。

但很重要的一点是,多人之间需要共享代码、合并代码,此时就需要一个远程仓库

8.1 远程仓库工作模式

8.2 远程仓库选型

此两种可以注册自己测试使用,但如果是商业项目,需要更多支持需要付费。

8.3 基本操作

每个开发人员,在面对远程仓库时,会面临的一些基本操作。

8.3.0 注册git服务器账号

码云 注册账号,并登录。

进入公司后,很可能会使用公司自己搭建的git服务器,则账号向领导索要即可

8.3.1 秘钥&公钥

1> 查看秘钥(ssh key)

cat ~/.ssh/id_rsa.pub

2> 创建SSH Key

ssh-keygen -t rsa -C "你自己的邮箱@example.com"

直接回车 不要输入密码.直接按4次回车即可.不输密码

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

3>登录github或者gitee,进入设置-SSH公钥,文本框里填入公钥id_rsa.pub文件的内容

为什么GitHub或Gitee需要SSH Key呢?因为它们需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub/Gitee只要知道了你的公钥,就可以确认只有你自己才能推送。

当然,GitHub/Gitee允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

8.3.2 新建远程仓库

8.3.3 本地关联远程仓库

本文档中选用仓库的 https协议的地址,将此地址关联到本地git中

8.3.4 推送文件到远程仓库

将本地仓库中已经commit的内容push到远程仓库,以共享自己的代码。

git push -u origin "master"

push

输入凭证,如此码云才能接受此次上传的内容

8.3.5 克隆远程仓库

如果仓库已经由别人创建完毕,我们需要其中的内容,则可以通过 git clone 将其复制到本地。

新建目录“repo2”,然后在其中执行 git clone

远程仓库,复制到本地,并自动初始化为一个本地仓库

8.3.6 代码共享

多人协同开发时,写好代码的git push 上传到远程仓库;需要代码的 git pull 拉取代码即可。

有人再次将本地仓库内容,上传到了远程仓库

重点:此时另一方如果想获得更新,则需要做一次拉取 git pull

【重点】==每次想要往远程push代码,一定要先git pull==,因为有可能远程代码已经更新,而你本地代码没有远程代码同步,此时直接push会拒绝!所以一定要先git pull拉取远程最新代码,与本地代码合并,合并后再执行git push推送到远程

8.3.7 拉取&推送远程的其他分支

ps: 远程也可以创建其他分支的

# 拉取远程dev分支代码
git pull origin dev

# 将本地master代码推送到远程dev分支
 git push origin master:dev

9.附录

git操作命令大全

过几天更git在idea2023版中的操作。。。。。。。。

下课

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值