zoukankan      html  css  js  c++  java
  • git系列之(四)git常用命令工作原理

    有如下版本库的树型结构

    image

    (一)git cherry

    如下图示:左上图①表示本地当前提交的历史记录。右上图②是远程库当前提交的历史记录。图③是两都之间的差异。默认比较本地分支(HEAD)和远程分支, 即当前分支和当前分支追踪的远程分支。找到本地提交列表中,尚未推送到远程的提交。等同如下
    git cherry origin/b1 b1(超前者为第二参数)
    git cherry origin/b1 head

    image
    由图④可以看出本地b1超前于远程b1一个提交。

    image

    (二)git cherry-pick

    image

    (三)git stash

    有如下版本库:当前版本库的提交状态如下图所示

    image

    修改test.txt为如下内容

    image

    image

    (四)git commit

    (五)git fork:

    如下图有share1.git,share2.git、share3.git三个版本库,其中share1.git和share2.git是两个单独的开源项目版本库。share3.git版本库是基于share1.git、share2.git两个开源项目版本库开发的本地项目版本库。此时share1.git、share2.git版本库将作为share3.git版本库的上游库而存在。如何能保证share3.git能与上游share1.git、share2.git版本库更新同步?

    image

    场景一:关联share3.git到share1.git、share2.git,并更新开源版本库代码到本地库share3中

    image

    (六)git fetch

    (七)git reset:有如下所示的版本树结构,从a4f767e经历了两次提交后此时head指向9678728位置。

    image

    ①:git reset –soft a4f767e  如下图记录了此次操作的变化。此时在.git文件夹下会产生一个ORIG_HEAD文件来记录原始的head值。变化到a47后head指向发生了变化。但是暂存区和工作区的文件并没有改变。(保留了上图⑥所处的状态,即ORIG_HEAD=9678728b5指向的版本区和工作区状态)如果基于变化后进行提交则可以将head改变到a47处。丢弃了之前的两次提交且工作区文件没有变化。

    image

    ②:git reset –hard a4f767e2  如下图所示,reset –hard操作修改了index文件和工作文件。(回到上图④所处的状态即当前head:a4f767e2工作区和版本区的状态)

    image

    ③:git reset –mixed head^^: 如下图所示
    不修改工作区文件(保留了上图⑥所处的状态,即ORIG_HEAD=9678728b5指向的版本区和工作区状态)。
    修改暂存区文件index。(回到上图④所处的状态即当前head:a4f767e2版本区的状态

    image

     

     

    git commit时会

     

     

    git stash
    git stash list
    git stash pop

    git系列之(四)git stash工作原理

    https://www.cnblogs.com/yelbosh/p/7471979.html

    https://www.jianshu.com/p/d73dcee2d907

    git fork的使用

  • 相关阅读:
    Layui 数据表格显示图片,鼠标滑过图片放大
    ModuleNotFoundError: No module named redis
    Layui 数据表格特定数据行变色
    Qt下QMainWindow内部QTableView不能自适应大小
    android-启动另外一个Activity
    sqlite获取表字段
    Apache下更改.htaccess文件名称
    QTableView的indexAt使用方法
    Qt分割线
    QTableView排序
  • 原文地址:https://www.cnblogs.com/lihuali/p/7760075.html
Copyright © 2011-2022 走看看