• [Git] 极简Git——关于Git的简要回顾


    1. Git历史:它起源于Linux内核开发时,为辅助Linux开发而设计的版本控制系统,发源于C时代的它,有不少C的影子和影响,其中 stash 命令就算一个。
    2. Git属于第三代版本控制系统,Subversion属于第二代,而所谓最开始的版本控制,也就是手工复制啦
    3. Git是分布式版本控制系统,Subversion是中心化版本控制系统,依赖服务器,主要区别在于有无本地仓库(Repository)
    4. Git和Subversion第二区别:关于文件的快照,svn将某个文件的修改记录为文件,即某文件版本=初始文件+文件改动,而Git更加激进,对每个版本的文件都做了个克隆。
    5. Git中所有数据在存储前都计算校验和(Hash),然后以校验和来引用。校验和包括文件目录结构,文件自身校验和,以此来检测是否发生改动。
    6. Git的几个状态,其是啥,与命令的关系:
      1. untracked 仅在项目文件夹下,仍未加入.git仓库底下,或被git rm 。

      2. unmodified 受Git版本控制管理了,git add + git commit 但自上一次加入以来未更改过。

      3. modified 受Git版本控制管理了,但自上一次加入以来已更改。
      4. staged 受Git版本控制管理了,但自上一次加入以来已更改,且执行了git add再度生成了份克隆。  
    7. Git的几个区域,及其与命令的关系
      Working Directory Staging Area .git repository
      |__________< check_out_____________|
      |__< reset/add >__|_____commit >_____|
    8. 所以checkout 会覆盖Working Directory 记得保存。IDEA有警告,nice.
    9. git init 进入文件夹后执行,以同步设置(repository等)
    10. git clone以克隆代码到本地
    11. git pull以更新云端代码到本地。
    12. stash与add,stash代表了当前文件的缓存区,stash to stack。与add的区别在于,它不会生成克隆,实际使用时,你会看到working directory的变更回到了上衣版本同步时的样子,更改则进入了栈,应用更改的时候pop出来,直白的面对数据结构,使人联想到C。
    13. Git分支,没什么好讲的,rebase的时候增加分支,值得注意的是,push冲突时,rebase 变基会有个小分支,会改变remote tracking branch。
    14. Git merge。合并
    15. Chery pick。在另外一个分支,通常是master,将其他分支,通常是dev,pick过来,merge的操作。
    16. 理论上提交的代码应该要做到没问题,不影响其他模块,实际上往往不行,所以2~3个分支总是需要的,dev,test,master。根据进度,测试情况,一点一点chery pick或者merge过来
    17. 正常的Git流程:git init/git clone-->git add-->[git stash-->git pull-->git stash apply ]-->git commit-->[git add -->git commit --amend]-->git push
    18. 各IDE的git 插件在保存时都会add。有文章说IDEA只会stash,是错的。可以开个cmd,定位到仓库底下,编保存边验证下。
    19. Git push 和pull 的本质在于同步commit对象,这点很重要,也是为什么可能会把别人的提交 变成 自己的提交的原因。
  • 相关阅读:
    Linux命令笔记
    Linux服务安装集合(1)
    浅谈GIT之通讯协议
    浅谈GIT之底层对象理解
    友情链接
    当黑客被抓是种怎样的体验?
    PHP 中 include 和 require 的区别详解
    论假如有一台无限算力的主机
    msf渗透安卓手机
    aws ec2 安装Elastic search 7.2.0 kibana 并配置 hanlp 分词插件
  • 原文地址:https://www.cnblogs.com/easy-tech/p/12167936.html
Copyright © 2020-2023  润新知