• 计算机基础--Git


    1. 为什么要使用Git

    Git本身就是一个代码版本控制器。针对一个项目开发过程,我们需要不断的添加新的功能或者修改bug,也就是要对代码的版本不断的备份和迭代。如何方便的对之前的代码进行备份,或者将当前的修改和之前的代码进行对比。这就促使了代码版本控制器的产生。
    此外,在进行代码开发过程中,可能涉及到不同的开发人员对同一个项目进行开发,这就需要保证不同的开发人员开发的代码互不干扰,但又能把每个人开发出的功能合并到主代码库中。这也是git具备的一个重要功能。

    2. Git中相关的术语

    Git最主要是理解一些区的相关概念,即:

    • 工作区:就是在本地电脑里能看到的代码目录。
    • 暂存区:一般存放在 .git 目录下的 index 文件(.git/index)中,从名字直译可以看出来是对修改的代码进行暂存(也就是在执行git add. 后代码存在暂存区)。
    • 本地库:用于专门存储正式代码本地存储区域(也就是在执行git commit 后代码存在存储区);
    • 远程库:用于专门存储已提交正式代码的远程服务器(比如github)。

    在这里插入图片描述

    3. Git的一些基本操作

    (1) 克隆某个代码库并切出来自己的分支

    // 比如clone freeswitch
    git clone https://github.com/signalwire/freeswitch.git
    //基于当前分支切出新的分支,这里的my_branch就是新分支的名字
    git checkout -b my_branch 
    // 关联到远程仓库,唯有关联后才能把自己修改的代码push到远程库
    git push --set-upstream origin my_branch 
    // 查看关联是否成功
    git branch -vv
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    远端的代码可能有多个分支,因此也可以切到其他已有的分支

    // 查看远程库中所有分支版本
    git branch --all
    // 切到已有分支A-branch
    git checkout A-branch
    
    • 1
    • 2
    • 3
    • 4

    (2) 个人修改代码提交

    git add.
    git commit -m"本次修改的注释"
    git push
    // 可以使用diff查看当前修改和其他分支的不同
    git diff my_branch other_branch
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3) 将个人分支(my_branch)做的修改合并到master分支

    // 切换到master分支
    git checkout master
    // 更新master分支
    git pull
    // 将my_branch上的修改合并到master
    git git merge my_branch
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (4) git查看历史的代码提交记录
    https://www.runoob.com/git/git-commit-history.html

    git log - 查看历史提交记录
    
    • 1

    得到如下内容

    commit c68142b562c260c3071754623b08e2657b4c6d5b
    Author: runoob <test@runoob.com>
    Date:   Fri May 3 15:52:12 2019 +0800
    
        修改代码
    
    commit 777424832e714cf65d3be79b50a4717aea51ab69 (change_site)
    Author: runoob <test@runoob.com>
    Date:   Fri May 3 15:49:26 2019 +0800
    
        changed the runoob.php
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其中 commit 后的字符串(c68142b562c260c3071754623b08e2657b4c6d5b)就是版本号。
    (5) git版本回退

    git log
    git reset --hard 版本号
    
    • 1
    • 2

    (4) 将某个分支的所有修改合并到master
    首先切换到master分支

    git merge dev-name
    
    • 1

    (5) git版本回退

    git log
    git reset --hard 版本号
    
    • 1
    • 2

    (6) 远程分支的强制回滚(一般不用

    git checkout current_branch_name # 切换到当前分支
    git reset --hard commit_id # 回滚到某次提交
    git push -f origin current_branch_name # 强制回滚
    
    • 1
    • 2
    • 3
  • 相关阅读:
    【LeetCode】687. 最长同值路径
    LeetCodeTop100(一)
    【XSS & CSRF 】访问时篡改密码——以DVWA-High为例
    Android processgroup机制
    SCAN BASIC --- PARTIII scan and atpg flow
    工厂设备扫码使用售卖联网开发需要怎么开发开源代码?
    Eolink ——通过文档驱动,快速开发接口
    Postgresql源码(70)逻辑复制DecodeXLOG主要流程和数据结构
    进程间通信
    项目经理晋升为企业高管,需要杀死自己三次
  • 原文地址:https://blog.csdn.net/qawsedrf123lala/article/details/127637437