• git命令 本地


    基础命令

    提交

    提交git commit
    提交-包含信息git commit -m "message"
    提交-省去add携带信息快速提交git commit -a -m "message"
    提交-包含代码微改不希望上次提交记录同步git commit --amend

    分支

    创建分支git branch <NAME>
    切换分支git commit <NAME>
    创建并切换分支git commit -b <NAME>

    合并

    合并分支git merge <目标分支名称> --目标分支与当前分支不同
    合并到主分支git merge <目标分支名称> --必要条件,当前分支为主分支

    合并–创造线性的提交历史

    注:把目标分支里的工作直接移到当前分支上。移动以后会使得两个分支的功能看起来像是按顺序开发,但实际上它们是并行开发的。

    git rebase <目标分支>
    
    • 1

    高级命令

    分离HEAD

    git checkout <历史记录的hash值>

    相对引用

    注:通过指定提交记录哈希值的方式在 Git 中移动不太方便。在实际应用时,并没有像本程序中这么漂亮的可视化提交树供你参考,所以你就不得不用 git log 来查查看提交记录的哈希值。

    并且哈希值在真实的 Git 世界中也会更长(译者注:基于 SHA-1,共 40 位)。例如前一关的介绍中的提交记录的哈希值可能是 fed2da64c0efc5293610bdd892f82a58e8cbc5d8。舌头都快打结了吧…

    比较令人欣慰的是,Git 对哈希的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。因此我可以仅输入fed2 而不是上面的一长串字符。

    使用相对引用的话,你就可以从一个易于记忆的地方(比如 bugFix 分支或 HEAD)开始计算。
    相对引用非常给力,这里我介绍两个简单的用法:

    使用 ^ 向上移动 1 个提交记录
    使用 ~<num> 向上移动多个提交记录,如 ~3
    
    • 1
    • 2

    父级有多条分支可以使用 ^<num>进行选择,父级分支按先后顺序排列

    撤销变更

    在 Git 里撤销变更的方法很多。和提交一样,撤销变更由底层部分(暂存区的独立文件或者片段)和上层部分(变更到底是通过哪种方式被撤销的)组成。我们这个应用主要关注的是后者。

    主要有两种方法用来撤销变更

     git reset # 本地撤销,在reset后, C2 所做的变更还在,但是处于未加入暂存区状态。
     git revert # 远程同步撤销,在我们要撤销的提交记录后面会多一个新提交!这是因为新提交记录 C2引入了更改 —— 这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2' 的状态与 C1 是相同的。revert 之后就可以把你的更改推送到远程仓库与别人分享
    
    • 1
    • 2

    自由移动提交记录

    • git cherry-pick …
    • git rebase -i <名称>

    git rebase -i的使用说明

    参数 --interactive 的 rebase 命令, 简写为 -i。

    Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。
    当 rebase UI界面打开时, 你能做3件事:

    调整提交记录的顺序(通过鼠标拖放来完成)
    删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
    合并提交。 它允许你把多个提交记录合并成一个。
    
    • 1
    • 2
    • 3

    提交的技巧

    使用自由移动提交记录的两种方法实现。主要用于提交顺序,记录是否删除

    里程碑的使用

    创建里程碑git tag <NAME>
    查找最近里程碑git describe [NAME] – 缺省值为当前记录
    查找里程碑同git disect(一个查找产生 Bug 的提交记录的指令)搭配使用

  • 相关阅读:
    C++ STL教程
    解决下拉菜单的过渡问题
    SSH:阿里云重装操作系统后连不上的问题
    uniapp 写播放器
    mysql如何创建添加索引?
    【操作系统】聊聊不可中断进程和僵尸进程
    APP测试
    【JAVA】链表面试题
    STM32低功耗分析
    CentOS7 Docker Hugo + CDN 域名端口无法访问的问题
  • 原文地址:https://blog.csdn.net/weixin_47798423/article/details/125507737