• Git学习笔记


    Git笔记

    1. Git是什么

    Git是世界上最先进的分布式版本控制系统

    • Workspace:工作区
    • Index/Stage:暂存区
    • Repository:仓库区(本地仓库)
    • Remote:远程仓库

    2. 基本操作

    文件操作:

    
    创建文件:touch 文件名.*
    删除文件:rm 文件名
    创建文件夹:mkdir 文件夹名
    删除文件夹:rm -r 文件夹名
    查看文件:cat 文件名
    

    恢复历史版本

    git reset --hard HEAD^  退回上一个版本
    git reset --hard HEAD^^ 退回上上一个版本
    git reset --hard HEAD^^^ 退回上上上一个版本
    git reset --hard HEAD~100 退回第100个版本
    git reset --hard 版本号 退回版本号版本 (查看版本号:git reflog)
    

    修改相关:

    放弃历史暂存区文件修改:git restor
    git chackout -- 文件名
    
    初始化仓库:git init
    
    添加文件到暂存区 :git add filename
    
    提交文件到仓库:git commit filename
    
    查看暂存区当前状态:git status
    
    查看暂存区文件修改情况:git diff
    
    查看最新文件修改记录:git log   简洁呈现:git log -pretty=online
    查看所有文件更改记录:git reflog
    
    清空暂存区:git rm --cached filename;
    		re ./git/index  暂存区文件
    

    分支:

    创建分支:git branch [分支名称]
    查看分支:git branch -v
    切换分支:git checkout [分支名称]
    合并分支:git merge [要求被合并的分支名称]
    

    3. 错误异常

    1.

    执行:git push origin master
    报错:error: src refspec master does not match any,远程仓库与本地仓库的之前版本不匹配
    解决方法:临时撤销上一次对仓库的修改之后,把远程仓库同步下来,之后再与本机仓库结合,目的就是
    :使两端仓库匹配
    

    2.

    执行:git push origin master
    报错: Updating an unborn branch with changes added to the index.(使用添加到索引中的更改更新未生成的分支。) 其实也就是本地的仓库没有提交,无法推送远程仓库
    解决方法:git commit -m "m"//作用:把暂存区的操作同步到本地的仓库中
    

    时光穿梭机(版本恢复)

    https://github.com/ymyguang/Code-Note/blob/master/%E6%9D%82%E8%AE%B0/img/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/image-20200304155405798.png

    命令说明:
    • git rm 删除工作区文件,并且把删除记录提交到暂存区(git rm[name]相当于:rm + git add[name] )
    • rm 删除工作区的文件。
    恢复的方法:
    • git checkout filename
      • 对于checkout的说明:
        • 情况一:当暂存区存在该文件时,将暂存区文件恢复到工作区
        • 情况二:当暂存区未存在该文件时,将版本库中的文件恢复到工作区
    • git reset HEAD^ filename
      • 作用:把上一个版本filename拉取到暂存区,此时工作区并不存在该文件,但是当我们执行git checkout filename 文件在工作区就会被找到!
    尝试情况:
    • 情况一:提交到暂存区,不提交文件库

      • rm删除,工作区文件不存在,暂存区没有同步最新情况
        • 恢复
          • git checkout filename 工作区恢复成功,来源暂存区,可以看出add是把文件放到暂存区中
          • git reset HEAD filename 恢复失败(考虑原因是因为没有可恢复的仓库)
      • git rm删除,工作区文件不存在,暂存区更新删除记录,即暂存区该文件执行删除操作
        • git checkout filename 恢复失败(原因:因为给git rm=rm + add,此时暂存区该文件的记录,因此checkout会尝试在暂存区中恢复文件到工作区,但是暂存区中只有该文件的删除行为,而文件却不存在,因此恢复失败)
        • git reset HEAD^ – filename恢复成功
    • 情况二:提交到暂存区,提交到文件库

      • rm删除,工作区文件不存在,暂存区存在
        • git checkout filename 工作区恢复成功
        • git reset HEAD^ – filename恢复成功
      • git rm删除
        • git checkout — filename 恢复失败
        • git reset HEAD^ filename 此时操作区并未恢复文件 当在执行:git checkout filename 此时,工作区恢复了该文件
  • 相关阅读:
    利用SVN进行个人代码管理
    ECEF坐标系
    地理坐标系、大地坐标系、投影坐标系
    让VS能够识别我的DLL运行库
    cannot convert parameter 1 from 'const char *' to 'LPCWSTR' 修改
    创建文件目录C++ windows
    GDAL获取遥感图像基本信息
    全球经纬度划分
    遥感影像度与米的转换
    C++ assert用法
  • 原文地址:https://www.cnblogs.com/ymyguang/p/12854663.html
Copyright © 2020-2023  润新知