git 知识补充

补充

  1. git 可以只提交文件的部分内容, git add -p,称之为hunk, sourcetree也可以进行设置

  2. 分支改名
    git branch -m cat tiger

  3. 分支合并后产生的commit, A合并B,commit 信息中,父提交记录顺序,parents : A, B

    A在前,B在后,表示是A 合并的B

  4. git如何判断分支是否可以删除
    当前分支所指向的commit ,没有其它commit指向它(这个提交(分支)还没有被合并),或只有当前分支指向它,没有其它分支指向它时,在删除这个分支时就会有提示不能直接删除

  5. rebase 后,对应commit 值是否发生变化
    看情况,嫁接到其它commit 之上的commit 的值会发生变化,因为其父提交发生了变化,同理,在这个commit 之后的提交的值也发生变化
    A B C D E F,把F嫁接到其它 COMMIT后,A到E的COMMIT的值都发生变化

    修改现有COMMIT 的注释,也会发生这样的连锁反应

  6. rebase 的其他用途
    修改历史提交注释 r选项
    合并多个提交 s 选项
    把一个提交拆分成多个commit 在操作列表使用使用 edit
    在commit 之间添加新的commit edit选项
    调整commit 之间的顺序 直接在列表里调整,
    删除commit 在列表里删除相关行过使用drop,删除后对它之后commit 的影响如何

  7. 空目录无法被添加到git
    因为根据算法,添加的对象必须要有内容,以供sha1算法使用

  8. 合并后再使用 git rebase 使提交成为一条直线

    git merge upstream-master
    Auto-merging layout/_partials/sidebar/site-overview.njk
    Auto-merging layout/_partials/post/post-followme.njk
    Merge made by the 'recursive' strategy.
     layout/_partials/header/menu-item.njk      | 5 +----
     layout/_partials/page/breadcrumb.njk       | 6 +-----
     layout/_partials/post/post-followme.njk    | 2 +-
     layout/_partials/sidebar/site-overview.njk | 2 +-
    
    git slog --graph
    *   b1b3e13 (HEAD -> release) Merge branch 'upstream-master' into release
    |\
    | * d51ca0e (upstream/master, upstream-master) Fix: handle invalid config
    * | 369c5b5 (origin/release, origin/master, origin/HEAD, master) Resolve conflicts
    |/
    * d6f344f Refactor sidebar-panel using flex layout
    * edefcda Add NProgress (#79)
    
    # 把前分支作为基础分枝, 把 upstream-master 分支的提交嫁接在其上面
    git rebase
    First, rewinding head to replay your work on top of it...
    Applying: Fix: handle invalid config
    Using index info to reconstruct a base tree...
    M	layout/_partials/post/post-followme.njk
    M	layout/_partials/sidebar/site-overview.njk
    Falling back to patching base and 3-way merge...
    Auto-merging layout/_partials/sidebar/site-overview.njk
    Auto-merging layout/_partials/post/post-followme.njk
    
    git slog --graph
    * 217e224 (HEAD -> release) Fix: handle invalid config
    * 369c5b5 (origin/release, origin/master, origin/HEAD, master) Resolve conflicts # 以这个提交做为 rebase
    * d6f344f Refactor sidebar-panel using flex layout
    * edefcda Add NProgress (#79)
    1. 使用merge出现了分支线路
    2. rebase后,分支线路消失,成为一条直线。 是 以当前分支的最TOP的那个(369c5b5)提交做为rebase,重放合并进来的分支上的提交的