• Git 常用命令汇总


    导言

    如果你是新手小白,完全不懂git,可以先看这一篇 github 详细教程
    本文仅适用于对 git 操作已经有了一定掌握的用户,本文的目的在于将常用命令统一梳理记录,便于查阅。


    干货

    • 克隆指定分支:git clone -b
    • git add的反操作:git reset HEAD [文件名, optional]
    • git commit的反操作:
      • 恢复到暂存区: git reset --soft HEAD^
      • 直接丢弃commit的修改:git reset --hard HEAD^
    • 本地覆盖远程:git push origin -f
    • 远程覆盖本地:git reset --hard origin/master && git pull
    • 拉取所有更新(但不同步):git fetch --all
    • 分支(branch):
      • 创建分支:git checkout -b [old_branch, optional,默认是当前分支]
      • 删除分支:git branch -d(or -D,强制删除)
      • 删除远程分支:git push --delete origin
      • 修改分支名:git branch -m
    • 标签(tag,tag其实也是一个 branch):
      • 创建 tag:git tag
      • 查看 tag 列表:git tag
      • 查看 tag 列表(有过滤条件):git tag -l “0.1.0*” (只查看0.1.0开头的tag)
      • 删除 tag:git tag -d
      • 将 tag 同步到远程:git push origin
    • git stash相关:
      • 将修改暂存:git stash
      • 将修改释放:git stash pop
      • 查看暂存的修改:git stash list
    • git merge & git rebase 相关,假定我们现在在一个从master checkout 出来的 feature 分支上,(https://joyohub.com/2020/04/06/git-rebase/):
      • git merge master:会在feature 分支的顶端新建个merge commit,将两个分支的修改merge在一起
        • 优点:非破坏性
        • 缺点:创建了新的merge 节点,会使feature分支的历史记录变的复杂,尤其是如果master更新频繁的话,会把feature的提交记录搞的很脏
      • 只merge特定的几个commit(cherry pick):
        • 只将master里的某个commit 合到 feature 里面来:git cherry-pick
        • 将master里的某一段commit合到 feature 里面来:git cherry-pick 左开右闭,不包含start_commit_id
      • git rebase master:将 feature分支的改动移动到master分支的顶端,不会创建新commit
        • 优点:项目历史很清晰,消除了git merge 所需的不必要的合并节点
        • 缺点:虽然提交历史记录“看起来”是干净整洁的,其实可能会有合并错的风险
      • git rebase 合并多次提交记录:
        • git rebase -i HEAD~4, 进入vi编辑模式;
        • 在编辑模式里修改哪些commit需要被合并,哪些需要保留(pick:保留;squash:和前一个commit合并;drop:删除该commit)
      • git merge 和 git rebase 过程中的 incoming和current branch 分别是什么?
        • git merge:Merge the incoming changes into the current branch
        • git rebase:Rebase the current branch on top of the incoming changes
  • 相关阅读:
    计算机毕业设计django基于python的读书笔记共享平台
    推荐5款数据可视化强势工具
    【每日一题】搜索二叉树的最大拓扑结构
    Python基本语法元素
    关于<? extends Class>和<T extends Class>的区别
    Leetcode—260.只出现一次的数字III【中等】
    API 接口应该如何设计?如何保证安全?如何签名?如何防重?
    QT+OSG/osgEarth编译之二十五:libzip+Qt编译(一套代码、一套框架,跨平台编译,版本:libzip-1.9.2)
    Apollo学习笔记(27)李群、李代数
    vue、js获取页面中所有css样式(包括link标签)案例为打印使用
  • 原文地址:https://blog.csdn.net/aaon22357/article/details/133826839