zoukankan      html  css  js  c++  java
  • Git

    Git学习

    最近在项目的开发中由于git操作失误差点儿导致重大错误,因此决定接下来掌握Git,熟悉各个命令使用场景与正确使用。

    我们使用git log --oneline --graph --decorate --all 来查看分支节点

    avatar

    avatar

    head指向的就是工作区的内容,

    尝试用的git撤销命令

    git checkout HEAD 文件名 // 撤销工作区的修改,就是将没有add 也没有commit的时候恢复数据
    
    git status //查看上次提交跟这次提交有啥那些文件发生了更改
    
    git reset HEAD 文件名 
    // 将暂存区的内容清空,  注意:这个时候只是撤销了add操作 工作区的内容还是发生了改变
    // 要想将工作区的内容回复还要调用git checkout 进行撤销更改。
    

    avatar

    我们的Head指向的是当前工作区的内容,我们可以使用

    git checkout hash //跳转到历史某个提交状态
    

    例如我们使用git checkout c0

    avatar

    现在head指向了c0,既不属于main分支也不属于bugFix分支,实现了分离Head

    咱们在上图的基础上调用

    git branch new

    // commit是为了更好看到新创建的分支的指向

    git commit

    命令

    avatar

    我们可以了解到当你git branch 的时候head指向的就是分支初始化时指向的节点。

    我们来了解一下 rebase命令

    git rebase c4
    

    avatar

    我们可以看到rebase命令把head指向的节点复制到了c4的下边,注意rebase要求要复制的节点不被包括在目标地点的log中,比如上图:c0,c1都不能复制到c3,c4,c2下边,c2,可以复制到c3,c4下,同理c3,c4可以复制到c2下边。

    分支的删除:

    git branch -b 分支名字
    

    我们要思考一下删除分支只是删除那个引用,比如我们当前位置的上图,删除bugFix分支只是会将bugFix这个引用删除掉,并不会将这个分支所创建的节点删除。

    分支的合并

    1. merge 命令

      git merge 分支名/节点哈希值
      
    2. rebase 命令

      见上文

    3. cherry-pick 命令

    avatar

    git cherry-pick 节点哈希值
    //假设当前分支是master,执行了git cherry-pick C3(哈希值),C4(哈希值)命令后会直接将C3、C4节点抓过来放在后
    //面,对应C3'和C4'
    

    总结

    不管是HEAD还是分支,它们都只是引用而已,引用+节点是 Git 构成分布式的关键

    merge相比于rebase有更明确的时间历史,而rebase会使提交更加线性应当优先使用

    通过移动HEAD可以查看每个提交对应的代码

    clonefetch都会将远程仓库的所有提交引用保存在本地一份

    pull的本质其实就是fetch+merge,也可以加入--rebase通过rebase方式合并

  • 相关阅读:
    google搜索的使用小窍门
    openssl的使用
    vi vim 的使用
    nfs
    setfacl命令的使用
    JAVA记录
    Yapi基本使用
    Yapi部署
    Mysql问题记录
    Spring boot+MYSQL多数据源
  • 原文地址:https://www.cnblogs.com/FCY-LearningNotes/p/14799756.html
Copyright © 2011-2022 走看看