Git常用指令总结
小橘子🍊

前言

自己在学习 Git 过程中摘录下来的一些常用指令,方便自己今后需要使用时进行查询,学习的途径主要是两个,在下面给出链接。

廖雪峰老师Git教程

Git版本视屏教程

集中式 VS 分布式

  • 集中式

    1. 必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。

    2. 必须存在中央服务器,干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。

    3. 安全性不高,因为存在中央服务器,如果服务器出故障,将会导致整个版本控制系统崩溃。

  • 分布式

    1. 分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。

    2. 分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。

常用 Git 指令

  • 创建 Git 版本库

    1
    $ git init
  • 将文件添加到 Git 版本库

    1
    $ git add
  • 提交更改内容

    1
    $ git commit -m "提交信息"
  • 查看版本库状态

    1
    git status
  • 查看文件修改的内容

    1
    $ git diff 文件名
  • 查看 Git 提交日志

    1
    $ git log --oneline --graph
  • 版本回退

    1
    2
    3
    4
    # --hard 选项会导致代码也会被修改到版本ID时刻
    # HEAD^ 表示上一个版本,HEAD^^ 表示上上一个版本
    $ git reset --hard 版本ID号
    $ git reset --hard HEAD^
  • 查看历史命令,用来确定期望的回退版本号

    1
    $ git reflog
  • 丢弃工作区的修改,即让文件回到最近一次 git commit 或 git add 时的状态,这个指令有时也可以用来作为恢复误删的文件

    1
    2
    3
    $ git checkout -- 文件名
    # git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。
    $ git reset HEAD 文件名
  • 删除版本库中的文件

    1
    $ git rm 文件名
  • 添加远程仓库

    1
    $ git remote add 别名 远程仓库地址
  • 查看远程仓库信息

    1
    $ git remote -v
  • 推送指定分支到远程仓库

    1
    $ git push 远程仓库(别名) 分支名
  • 指定本地分支与远程分支的链接,未指定将会导致 git pull 失败

    1
    2
    3
    $ git branch --set-upstream-to 本地分支名 远程分支
    # 例如
    $ git branch --set-upstream-to dev origin/dev
  • 拉取远程仓库指定分支到本地

    1
    $ git pull
  • 拷贝远程仓库全部分支到本地

    1
    $ git clone 远程仓库地址
  • 创建并切换分支

    1
    2
    3
    4
    5
    $ git checkout -b 分支名字

    # 相当于以下两条命令
    $ git branch dev
    $ git checkout dev
  • 切换分支,需要分支存在

    1
    $ git branch dev
  • 查看当前分支

    1
    $ git branch
  • 合并目标分支到当前分支

    1
    $ git merge 目标分支
  • 删除指定分支

    1
    $ git branch -d 分支名
  • 临时存储当前工作现场

    1
    $ git stash
  • 查看存储的工作现场

    1
    $ git stash list
  • 恢复工作现场

    1
    2
    3
    4
    $ git stash pop
    # 上述指令等价于
    $ git stash apply
    $ git stash drop
  • 变基

    1
    $ git rebase
  • 打一个新标签

    1
    $ git tag v1.0
  • 查看所有标签

    1
    $ git tag
  • 为指定提交打标签

    1
    $ git tag v0.9 提交ID号 -m "消息"
  • 查看标签说明消息

    1
    $ git show <tagname>
  • 删除标签

    1
    $ ggit tag -d v0.1