• Git学习笔记


    虽然一直在用git,但是自从开始用JetBrains家的IDE以后就没碰过命令行版本的git了(图形化界面害人不浅)

    基础知识

    The woking directory:与本地文件系统同步

    Staging index:即被git add加入的暂存区

    Commit history:git commit后加入的版本库

    HEAD指针:在Commit history中指向当前工作位置

    具体命令

    branch

    git branch列出所有分支,git branch <branch>基于HEAD新建分支,-d用于删除已合并的分支,-D强制删除分支,m重命名分支。

    status

    status 显示的是目前需要add(图中为红色)和需要commit(绿色)的文件,这一命令同时给出文件目前的状态

    1652797912_1_.png

    log

    log 显示当前分支的版本历史,--branches=*查看所有分支的历史。可以增加各种选项。--oneline显示简介版本,--graph绘制拓扑图更直观显示版本变化,-n限制显示个数,--author等可以查询特定限制的修改。

    1652870295.png

    checkout

    1.切换分支

    2.使用git checkout -b <new-branch><existing-branch> 可以基于已有分支新建并切换到新分支,<existing-branch>默认为当前HEAD。

    3.切换到某次commit的状态,可以查看旧版本的代码。但此时处于"detached HEAD"状态,此时所进行的修改与整个开发工作完全分离。可以通过 git switch -c <new-branch-name>建立新branch来保存修改,或是直接git switch - 来撤销修改(好像也可以用git checkout -b?不知道有啥区别)。

    具体实现过程是用commit history中的文件更新staging index,再更新woking directory。因此可以使用git checkout .来放弃未add的更改。

    1652885307.png

    revert

    通过一个新的提交来消除某次提交产生的影响,原有的提交会保留。

    1652885946_1_.png

    使用git revert HEAD

    image-20220518230004577.png

    reset

    将HEAD指针和branch的指针指向指定的commit。--soft到此为止,--mixed还会修改Staging index,即当前的文件修改不会丢失,--hard额外再修改woking directory。默认为--mixed。(所以--soft是处理啥需求的啊

    reset相当于丢弃了所选commit之后的commit,因此只能在push之前执行。

    可以利用git reset <file>来将特定文件移出Staging index,或直接使用git reset 重置Staging index。

    rm

    --cached主要用于删除Staging index中的文件,默认则会同时删除Staging index和woking directory下的文件。如果Staging index或woking directory中要删除的文件与HEAD中的文件不同,则需要使用-f。同样地,-r用于删除目录。

    remote

    管理本地储存的远程库条目。-v显示所有远程库,addrmrename增、删、改远程库条目

    fetch

    下载远程分支并储存在本地的远程库副本中,并不改变本地工作目录的内容。这种操作比较灵活安全,可以通过checkout切换到远程分支上进行操作并通过 git switch -c <new-branch-name>将远程库保存到新分支上。pull相当于fetch后直接merge,在本地库建立新提交。pull --rebase相当于fetchrebase,在本地库重现远程提交来保证线性历史。可以用git config --global branch.autosetuprebase always来默认使用rebase

    1652927529_1_.png

    1652927549_1_.png

    1652927566_1_.png

    1652927577_1_.png

    rebase

    将整个分支移动到另一个分支,通过将原始分支中的每个提交创建新的提交来实现(如下图),可以保证提交历史的简洁性和线性。-i可以让分支的历史记录更加符合需求。

    1652928637_1_.png

    merge

    建立一个全新的提交来合并两个分支,不会改变已有的提交历史,但是会引入一个新的提交,污染了历史记录。

    git push --force

    强制更改远程分支使其与本地分支同步,只有当没有其他人在使用这一远程分支时才可以考虑使用,可以有效清除黑历史

  • 相关阅读:
    在qt中用tcp传输xml消息
    Response.Redirect 打开新窗体的两种方法
    div:给div加滚动栏 div的滚动栏设置
    高速排序算法
    海量数据处理面试题集锦
    VB中DateDiff 函数解释
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    mysql 加入列,改动列,删除列。
    Lucene教程具体解释
    Windows7下的免费虚拟机(微软官方虚拟机)
  • 原文地址:https://www.cnblogs.com/happyLittleRabbit/p/16287895.html
Copyright © 2020-2023  润新知