博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git详解
阅读量:3897 次
发布时间:2019-05-23

本文共 4145 字,大约阅读时间需要 13 分钟。

1. 什么是Git

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

1.1 GIt的作用

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

2. 的安装

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

    在这里插入图片描述

3. 的安装

  • 先下载语言包和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.txtgit 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 mastergit 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.

  • 是一个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可以自定义,但是我们一般用origingit 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即可

转载地址:http://nhuen.baihongyu.com/

你可能感兴趣的文章
USB_ModeSwitch 介绍
查看>>
大公司和小公司的抢人战,孰胜孰负?
查看>>
通过make编译多文件的内核模块
查看>>
如何调试Javascript代码
查看>>
皮克斯宣布开源Universal Scene Description
查看>>
复盘:一个创业项目的失败之路
查看>>
阿里巴巴宣布加入Linux基金会
查看>>
为什么你应该尝试 “全栈”
查看>>
程序员什么时候该考虑辞职
查看>>
如何写一本书?
查看>>
加班能体现编程的热情吗?
查看>>
Hadley Wickham:一个改变了R的人
查看>>
glibc 指导委员会解散声明
查看>>
Linux创始者托瓦兹谈及IoT --「安全在其次」
查看>>
传感器数据分析(Sensor Data Analytics)是什么?
查看>>
智能硬件开发如何选择低功耗MCU?
查看>>
阿里感悟(十)如何写好简历
查看>>
阿里感悟(十一)如何准备面试
查看>>
软件架构入门
查看>>
80 多个 Linux 系统管理员必备的监控工具
查看>>