Git详解

1. 什么是Git

  • 世界上最先进的分布式版本控制系统
  • Linus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件

1.1 GIt的作用

  • 协同开发
  • 版本记录
  • 冲突解决
  • 历史追查
  • 代码备份
  • 版本还原
  • 权限管理
  • 分支管理
  • 代码审查

2. Git的安装

  • 修改安装路径后,一路next即可

    在这里插入图片描述

3. TortoiseGit 的安装

  • 先下载语言包和TortoiseGit的安装包

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

安装TortoiseGit的安装包

  • 一路 Next 即可,配置均选择默认

    在这里插入图片描述

安装 语言包

  • 双击即可安装

配置汉化

  • 语言包和安装包都安装后。在桌面右键,选择Settings

    在这里插入图片描述

  • General > language

    在这里插入图片描述

4. 配置git签名

  • 选择你要作为git工程存放的目录,右键,选择 git bash here

    • git是一个分布式管理工具,需要用户名和邮箱,作为一个标志

      git config --global user.name "wzc"
      git config --global user.email "zichao412@163.com"
      
    • 注意:邮箱的是集合周,和你在github上的邮箱要一致

5. 创建版本库

  • 选择你要作为git工程存放的目录

  • 初始化版本库

    git init
    # Initialized empty Git repository in [你的版本库路径]
    
  • 有了版本库后,它会显示你当前的分支状态

    在这里插入图片描述

6. git命令行

6.1查看文件状态

git status

6.2 暂存区【重点

git add [文件名/目录名]
  • 作用:

    • 用于跟踪文件或整个目录
    • 将文件,或者目录,加入到一个临时的暂存区 (缓存)
  • 使用git add后,可以使用将status查看状态

  • 小技巧:可以添加整个目录到暂存区,就不用单个文件的添加了

6.3 提交文件【重点

git commit
  • git add 只是把文件提交到暂存区 (相当于本地缓存),并没有把文件真正的提交

  • 使用 git commit能将文件提交到版本库中(相当于提交到了本地Git仓库中)

  • git commit 是将暂存区的所有文件,提交到了版本库中

  • git commit 后,会进入一个 vim编辑器的界面。(和Linux上的操作一样)

  • 在这个编辑界面中,编写你对此次提交的信息

  • 编辑好后,ECS:wq 即可

    在这里插入图片描述

  • 提交成功:

    在这里插入图片描述

  • 你也可以,一步到位

git commit -m "提交信息"

6.4 文件修改后,如何做?

当我们对上传到版本库(本地git仓库) 中的文件做出了修改,那该如何做到更新呢?和之前的流程一样

  • git status ,先查看哪些文件被改变

    在这里插入图片描述

  • git commit,将修改后的文件重新添加到暂存区

  • git commit -m ,将暂存区中更新的文件提交到本地的git仓库

6.5 查看日志

git log
  • 我们可以查看详细的版本提交信息(提交历史记录)

    在这里插入图片描述

    • 我们可以看大,我们一共提交了两个版本
git log --pretty=oneline
  • 这个语句,也是查看历史记录。但是嫩给你一个简化版本的记录:

    在这里插入图片描述

6.6 回退历史

  • 创建一个 test/2.txt文件,并且输入内容:“I LOVE CHINA”

  • 然后上传到本地版本库

    cd test/
    # 创建文件夹,并且编辑内容
    vim 2.txt
    
    # 添加到暂存区
    git add 2.txt
    # 提交到版本库
    git commit -m "添加一个txt文件 --03"
    
  • 查看历史记录,发现添加成功

    在这里插入图片描述

  • 修改该文件的内容,并且提交到版本库 ( 随便修改文件内容 )

    vim 2.txt
    # 提交到版本库
    git add 2.txt
    git commit -m "修改2.txt文件 --04"
    

    查看历史记录,修改成功:

    在这里插入图片描述

6.6.1 重点!!!

后来发现修改错误想要回到修改前的版本!!!

  • 回到上一次的提交

    git  reset --hard HEAD^1
    
    • HEAD

      • HEAD是一个指针,永远指向最新版本
      • ^1 ,表示让 HEAD指针指向上一个版本
    • git reset :用来修改 HEAD的位置

    • 参数:

      • --hard:【硬】,版本回退后,该版本立即变为最新版本!!! 不可复原
      • --soft:【软】,回退版本,但是会保存改动的记录(会自动帮你git add )
      • --mix:【折中】回退版本,并且保留所有改动记录。(不会自动 git add )
  • 理解图:

    # 回退到2个版本
    git  reset --hard HEAD^1
    

    在这里插入图片描述

  • 查看历史版本号!!

    git reflog
    

    在这里插入图片描述

  • 删除上一个版本:

    git reset --hard HEAD^1
    # 使用序列号回复
    git reset --hard 7664f01
    

6.7 还原文件

git checkout + [/文件名]
  • git checkout 对版本库中的文件进行标记

  • 无论你在 怎么修改,再使用 git checkout 命令,将回到被标记的状态

6.8 删除文件

本地删除文件后,并不代表是真正删除文件

  • 举例:在test文件夹中,删除新建文件 3.txt
  • 删除文件后,我们需要将删除的记录提交到版本库
# 我们要将删除文件的记录提交到版本库中
git add test/
git commit -m "删除了文件3.txt"
  • 这样就完成了删除

  • (但是还是可以通过:git reset --hard ,命令还原)

7. 工作区、暂存区、本地库

7.1 基本概念

  • 工作区:
    • working Directory,指电脑本地,包含 .git隐藏文件的地方z
  • 暂存区:
    • stage,存储在.git目录下的 index文件
    • 类似于缓存,有时候也叫索引
  • 本地库:
    • Repository,工作区中,有一个 .git,它就是git的本地仓库
    • 相当于一个在你电脑上的本地git仓库

7.2 关系图

在这里插入图片描述

8 分支

场景:项目上线运行,但是又有了新的需求,并且项目还要一致上线运行。平时还要修改一些bug,如何管理呢?

  • 已经上线的项目:主分支
  • 修改bug:分支
  • 添加新需求:分支

分支和分支之间互补影响!!!

在这里插入图片描述

8.1 查看分支

git branch -v

8.2 创建分支

git branch + [分支名
  • 创建分支,是从主分支中复制的一条分支,内容一模一样

  • 但是分支修改和主分支是独立的,互不干扰

8.3 切换分支

git checkout + [分支名]

8.4 合并分支

git checkout master
git merge + [分支名]
  • 要合并分支,必须使用 git checkout master切换到主分支

8.5 分支冲突【重点

当两个分支中,相同文件,出现内容不一样时。在合并时,会出现冲突。

  • 什么是冲突?

    指同一个文件,同一个位置的代码,再两个版本的仓库合并时,版本软件无法判断应该保留哪一个版本。因此会提示该文件发生冲突,冲突一般都需要程序员手动解决

  • 分之合并时,解决冲突

    1. 先在master分支上,创建一个 **conflict.txt **文件

    2. 再在 bugTest分支上创建一个 conflict.txt 文件

    3. 然后分别提交(两文件的内容不同)

    4. 最后合并(100%有冲突)

      在这里插入图片描述

  • 解决冲突重点

    • 产看当前发生的冲突

      git diff
      
    • 解决冲突:

      1. 查看冲突文件

        vim onflict.txt 
        

        在这里插入图片描述

      2. 手动决定你要保留的部分

        • 直接删除多余,或不需要的部分

        在这里插入图片描述

      3. 解决冲突后,执行add、commit到版本库就行了

9. gitHub

  • 是一个git项目的托管网站,主要基于git的版本托管服务

在这里插入图片描述

9.1 推送代码到github

  • 将本地仓库的代码,推送到 git远程仓库中

    • 绑定远程推送地址:

      git remote add [远端代号] [url]
      
      • 远端代号:指的是远程链接的代号,一般用origin,也可以指定以
      • url:
        • http:基于互联网
        • ssh:基于局域网
    • 推送代码:

      git push [远端代号] [分支名]
      
      # 比如,推送到主分支
      git push origin master
      

9.2 从github上克隆项目

  • 从Github上克隆

    git clone [url] [目录名]
    
    • 目录名可省略,省略后默认使用 github的仓库名
  • 修改文件后:

    • 先试用git add、git commit 将修改后的文件提交到本地版本库中
    • 然后推送到 git远程仓库
    git push origin master
    

注意!! 你直接推送到源项目上,需要该项目的拥有者开放权限!!不然你克隆的项目是无法推送你的修改

在这里插入图片描述

9.3 注意事项:

  • 每次开始写项目之前,都要和远程仓库进行代码同步更新

    # origin可以自定义,但是我们一般用origin
    git pull origin [分支名]
    

10. 协作冲突

两个账户都向 github上提交代码,相同文件,内容修改不同。在提交时,会产生冲突。需要手动解决

解决方式:

  • 产生冲突后

  • 修改合并冲突文件:

    1. 先和远程仓库(github上的仓库) 同步(会报错 ! ! !

      git pull origin master
      
    2. 报错之后,vim 去修改冲突的这个文件

  • git add

  • git commit

11. 第三方协作产生冲突

在上一节,我们讲了协作冲突,是多个人在一个github仓库中进行协同合作,完成项目。在真实的开发中,还可能遇到另外一种情况:

使用第三方协作开发来完成项目。就是指:我并不使用你的github仓库,我直接 fork你的仓库,然后从我fork的仓库中拉取代码,修改后提交到我怕fork的仓库。然后在我fork的仓库中,pull Requests到你的仓库即可。

你收到推送请求,审核代码后,Merge pull request即可整合。

12. gitlab

  • 概述:

    • 相当于github的私服(在局域网上使用)
    • 官网:https://about.gitlab.com/
  • 待续…

13. IDEA 整合 Github

configure – >settings

在这里插入图片描述

将Git 整合到 IDEA

在这里插入图片描述

配置github账号

在这里插入图片描述

配置成功后。apply即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯子的模样

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值