zoukankan      html  css  js  c++  java
  • Git

    Git

    一、为什么要使用Git?

    1.传统文档管理

    在我们写毕业论文时可能会遇到,多次修改之后的论文命名方式:


    论文_改.doc、论文_改改.doc、论文_改改改.doc、论文_改改改改.doc、论文_改改改改再改.doc、
    论文_改改改改再改TM不改了.doc

    2.源代码管理的好处

    • 方便多人协同开发

    • 方便版本控制

    3.Git的诞生

    • 作者Linux之父:Linux Torvalds

    • git开发目的:为了辅助 Linux 内核的开发

    • 是 Linux Torvals 在无奈被逼的情况下创造的

    • 2008年,GitHub 网站上线,为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub

    • Git 迅速成为最流行的分布式版本控制系统(没有之一)

    二、Git结构

    1.结构分析

    Git是分布式管理系统。服务器和客户端都有版本控制能力,都能进行代码的提交、合并、...

    结构图一:

    结构图二:

    2.本地代码管理

    工作区(Workspace):添加修改删除`文件

    暂存区(Index):将工作区中的操作完成小阶段的存储,是版本库的一部分

    本地仓库区(Respository): 对个人开发的一个小阶段代码存储

    • 记录的各版本可以查看或者回退

    • 但是在暂存区的版本一旦提交就再也没有了(保存到仓库区中)

    三、本地仓库操作

    1.安装git


    # 在虚拟机上安装
    sudo apt-get install git

    2.查看是否安装成功


    git --version

    3.创建项目

    a.创建一个项目文件夹用于演示(MyProjects)

    b.新建本地仓库

    cd ~/MyProjects/
    # 初始化
    git init

    # 会创建一个.git隐藏文件
    pyvip@TL:~/MyProjects$ ls -al
    total 12
    drwxrwxr-x 3 Conner Conner 4096 11月 27 16:22 .
    drwxr-xr-x 14 Conner Conner 4096 11月 27 16:22 ..
    drwxrwxr-x 7 Conner Conner 4096 11月 27 16:22 .git

    c.配置个人信息


    # 全局配置个人信息
    git config --global user.name "Youkou"
    git config --global user.email "python@admin.com"

    # 配置信息会保存在家目录下
    pyvip@TL:~/MyProjects/.git$ more ~/.gitconfig
    [user]
    email = python@admin.com
    name = Youkou

    # 针对本项目的个人配置信息
    git config user.name "Youkou"
    git config user.email "python@admin.com"

    # 配置信息出现在.git/config文件中

    d.新建测试文件


    vim test01.py

    e.查看文件状态


    git status

    f.将工作区添加到暂存区


    # 添加项目中所有文件
    git add .
    或者
    # 添加指定文件
    git add test01.py

    g.将暂存区文件提交到仓库区


    git commit -m '一些描述'

    h.查看历史版本


    git log
    git reflog

    git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log 不能察看已经删除了的commit记录

    4.回退版本

    方法一:

    • HEAD表示当前最新版本

    • HEAD^表示当前最新版本的前一个版本

    • HEAD^^表示当前最新版本的前两个版本,以此类推...

    • HEAD~1表示当前最新版本的前一个版本

    • HEAD~10表示当前最新版本的前10个版本,以此类推...


    git reset --hard HEAD^

    方法二:

    当版本非常多时可选择的方案


    # 通过每个版本的版本号回退到指定版本
    git reset --hard 版本号

     

    5.撤销修改

    • 只能撤销工作区、暂存区的代码

      • 撤销工作区代码


        git checkout 文件名
      • 撤销暂存区代码


        # 第一步:将暂存区代码撤销到工作区
        git reset HEAD 文件名
        # 第二步:撤销工作区代码
        git checkout 文件名
    • 撤销仓库区的代码就相当于回退版本操作

    6.版本对比

    • 对比本地仓库库与工作区

      • 在工作区,修改文件

      • git diff HEAD -- test1.py

    • 对比本地仓库各版本代码

      • git diff HEAD HEAD^ -- test1.py

    7.文件删除

    • 确定删除处理


      # 删除文件
      rm 文件名
      # git确定删除文件,对比添加文件git add
      git rm 文件名
      # 删除后记录删除操作版本
      git commit -m '删除描述'
    • 误删处理,撤销修改

  • 相关阅读:
    @MapperScan 注解和 mybatis.mapper-locations 配置两者缺一不可
    com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别
    定时任务框架Quartz-(一)Quartz入门与Demo搭建
    js分页的实现代码
    圣杯布局中对left盒子设置负内边距-100%的一点解释
    前端小知识--为什么你写的height:100%不起作用?
    CSS:实现垂直居中的常用方法
    [jdk源码阅读系列]Java中System.arraycopy()的用法
    [jdk源码阅读系列]overflow-conscious code
    省选?
  • 原文地址:https://www.cnblogs.com/my123456/p/10046087.html
Copyright © 2011-2022 走看看