这篇笔记是我学习廖雪峰大佬写的Git入门指南时候做的笔记,基本上就是将文章中使用到的 Git 指令记下来,包括了用法和拓展的说明。如果有错误的地方,还请指出,谢谢!!!

简单介绍

  1. Git 是分布式版本控制系统

  2. 执行提交时,系统会要求输入提交信息。

创建一个本地仓库及基本操作

  1. 创建一个版本库

    1
    2
    3
    4
    5
    $ mkdir 库名 #创建库
    $ cd 库名 #进入库
    $ pwd #打印出当前库的位置
    $ git init #将这个目录变成Git可以管理的仓库
    $ ls -ah #显示隐藏的.git目录线
  2. 把文件添加到版本库

    1
    2
    $ git add 文件名.后缀 #将文件添加到仓库
    $ git commit -m "提交的说明" #将文件提交到仓库
  3. 查看仓库状态

    1
    2
    $ git status #返回内容会告诉我们仓库的变化
    $ git diff 文件名 #显示出文件变化的内容
  4. 查看提交日志

    1
    2
    $ git log #显示从近到远的提交日志
    $ git log --pretty=oneline #简化显示内容
  5. 版本回退

    1
    2
    3
    4
    5
    $ git reset --hard HEAD^ #回退到上个版本
    #HEAD^代表上个版本,HEAD^^代表上上版本
    #HEAD~100代表往上100个版本
    $ git reset --hard #版本号前几位(至少5位)
    $ git reflog #打印记录的每一次命令
  6. 撤销修改

    1
    2
    3
    4
    5
    6
    #git add 之前的处理方式
    $ git checkout -- 文件名 #将文件在工作区的修改全部撤销
    #git add 之后的处理方式
    $ git reset HEAD 文件名 #将暂存区的修改撤销
    $ git checkout -- 文件名
    # git commit -m 之后,直接回退版本
  7. 删除文件

    1
    2
    3
    4
    5
    $ rm 文件名 #删除文件管理器中的文件
    $ git rm 文件名 #删除版本库中的文件
    $ git commit -m 文件名 #删除后提交一下
    #如果删错了
    $ git checkout -- 文件名 #用版本库里的文件替换工作区的

    GitHub远程仓库操作

  8. 为GitHub创建SSH Key

    1
    2
    $ ssh-keygen -t rsa -C "邮箱"
    #.ssh目录里,id_rsa是私钥,id_rsa.pub是公钥
  9. 本地仓库连接GitHub仓库

    1
    2
    $ git remote add origin git@github.com:github账户名/仓库名.git
    #origin 是远程仓库名,是默认的,可以改成其他的#通过不同的远程库名,可以让本地仓库连接多个远程库
  10. 推送到远程仓库

    1
    2
    3
    4
    5
    6
    $ git push -u origin master) #将当前分支master推送到远程
    #由于远程库是空的,第一次推送master分支时,加上了-u参数,Git
    #不但会把本地的master分支内容推送到远程新的master分支
    #还会把本地的master分支和远程的master分支关联起来
    #在以后的推送或拉取时就可以简化命令$git push origin master
    #将本地master分支的最新修改推送
  11. 删除远程库

    1
    2
    3
    4
    $ git remote -v #查看远程库信息$ git remote rm origin 
    #根据名字删除,origin为默认远程库名
    #这里的“删除”其实是接触本地与远程的绑定关系
    #只有去GitHub上在后台页面找到删除按钮才能真正删除

    克隆本地及分支操作

  12. 从远程克隆一个本地库

    1
    2
    $ git clone git@github.com:GitHub账户名/仓库名.git #普通克隆
    $ git clone -b 分支名 git@github.com:GitHub账户名/仓库名.git #克隆指定分支
  13. 创建分支

    1
    2
    3
    4
    $ git checkout -b 分支名 #创建分支
    #上面一条命令等于下面两条
    $ git branch 分支名
    $ git checkout 分支名
  14. 查看当前分支

    1
    2
    $ git branch #查看当前所有分支
    #列出来的分支中,当前分支前面会有一个 * 号
  15. 切换分支

    1
    2
    3
    4
    $ git checkout 分支名 #切换分支
    #更加科学,防止搞混的切换方法如下
    $ git switch -c 分支名 #创建并切换到新的分支
    $ git switch 分支名 #切换到已有的分支
  16. 合并分支

    1
    $ git merge 分支名 #将分支合并到当前分支
  17. 删除分支

    1
    $ git branch -d 分支名 #删除分支
  18. 解决合并冲突

    1
    2
    #解决冲突需要我们手动编辑后重新提交
    $ git log --graph --pretty=oneline --abbrev-commit #打印分支合并图
  19. 禁用 Fast forward 模式合并分支

    1
    2
    $ git merge --no-ff -m "提交消息" 分支名 #禁用快速合并模式合并分支
    #普通合并可以看出曾经做过合并,快速模式则不行
  20. “存储”当前分支(临时切换分支)

    1
    2
    3
    4
    5
    6
    7
    8
    $ git stash #将当前分支“存储”起来,以后恢复可继续工作
    $ git stash list #查看“存储”起来的工作现场
    #恢复方法一:恢复后,stash内容不会删除,需要单独删除
    $ git stash apply #恢复
    $ git stash drop #删除
    #恢复方法二:恢复的同时删除stash的内容
    $ git stash pop#多次stash后,选择性恢复
    $ git stash apply stash@{0} #最后这里是需要恢复的编号
  21. 复制一个特定的提交到当前分支

    1
    $ git cherry-pick 提交编号 #将该编号的提交复制到当前分支上
  22. 丢弃没有被合并过的分支

    1
    $ git branch -D 分支名 #强行删除未合并的分支
  23. 查看远程仓库的信息

    1
    2
    $ git remote #查看所有的远程仓库
    $ git remote -v #查看所有远程仓库更为详细的信息
  24. 推送分支

    1
    2
    3
    #将该分支上的所有本地提交推送到远程库
    #推送时需要指定本地分支
    $ git push origin 分支名
  25. 抓取分支

    1
    2
    3
    4
    $ git checkout -b 分支名 origin/分支名 #创建远程origin的分支到本地
    $ git push origin 分支名 #推送到分支#推送发生冲突的时候
    $ git branch --set-upstream-to=origin/分支名 分支名 #连接本体与远程
    $ git pull #将最新的提交从分支中抓取下来
  26. 整理分支提交历史

    1
    $ git rebase #将一大推分支图合成一条直线

    标签基本操作

  27. 创建标签

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ git branch #打印所有分支
    $ git checkout 分支名 #切换到需要打标签的分支上
    $ git tag 标签 #打上标签
    $ git tag #查看所有标签
    $ git tag 标签 提交的编号 #给指定的提交打标签
    $ git show 标签 #打印出标签的信息
    $ git tag -a 标签 -m "说明文字" 提交的编号 #创建带有说明的标签
    #标签与某个commit(提交)挂钩的,如果这个commit(提交)出现在多个分支上
    #那么这些分支上都可以看到这个标签
  28. 操作标签

    1
    2
    3
    4
    5
    6
    $ git tag -d 标签 #删除标签
    $ git push origin 标签 #推送某个标签到远程
    $ git push origin --tags #一次性推送全部尚未推送到远程的本地标签
    #删除远程标签
    $ git tag -d 标签 #删除本地标签
    $ git push origin :refs/tags/标签 #删除远程标签

    Git的修改操作

  29. 自定义Git

    1
    $ git config --global color.ui true #使Git会适当地显示不同的颜色
  30. 忽略特殊文件

    1. 在Git工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件填进去,Git就会自动忽略这些文件

  31. 强行添加文件到Git

    1
    $ git add -f 文件名 #-f可以强制添加文件到Git中
  32. 设置自动补全

    1
    $ git config --global alias.st status #告诉Git st表示status

    附录:命令表