Git使用笔记

92 阅读4分钟

git使用笔记

  • git文件夹是Git的版本库,内有暂存区stage(index),和master分支,以及一个指向master的HEAD指针。add指令将工作区(working tree)的修改提交到暂存区(index),commit指令再将修改提交到历史仓库(也就是当前分支)中
    image.png

常用命令

  • git init初始化仓库

  • git add <文件名.文件类型>将文件添加到暂存区

    • git add .将所有修改添加到暂存区
  • git commit -m "备注内容"把文件从暂存区提交到当前分支
    【注】可以多次添加,然后一次提交

  • git status查看当前工作区状态(查看是否有改动未添加或者已添加未提交的)

  • git diff 文件名.文件类型查看工作区和暂存区的差异

    • git diff --cached查看暂存区和仓库的差异
    • git diff HEAD查看工作区和仓库的差异
  • git log查看提交日志(按q退出查看)

    • git log --pretty=oneline查看单行的日志
    • git log --oneline只显示部分哈希值 【注】一大串数字字母是commit id(版本号)
  • git checkout

    • git checkout <分支名>切换分支
    • git checkout -b <新分支名>新建并切换到新分支
    • git checkout -- <filename>撤销工作区的修改,使用暂存区或版本库中的文件覆盖工作区的文件,就是让这个文件回到最近一次git addgit commit时的状态(要先进入被删除文件所在目录)
  • git reset

    • git reset --hard HEAD^回退到上个版本,log里面的版本会减少
    • git reset --hard HEAD^^回退到上上个版本
    • git reset --hard~n回退到n个版本之前
    • git reset --hard commit_id(前几位)指定回到未来的某个版本
    • git reset HEAD <filename>撤销暂存区的修改(之后就可以使用checkout撤销工作区的修改)
    • soft、hard、mixed三个参数的区别:
      • soft只修改HEAD,不修改暂存区(index)和工作区(working tree)
      • mixed修改了HEAD和index
      • hard同时修改了HEAD、index、working tree无法再恢复
  • 四种不同的文件状态对应的撤销修改的方法
    (注意以下1、2的撤销一旦执行无法再找回)

    1. 文件从未提交到版本库(文件状态为untracked file
      执行git clean -fd .
    2. 文件提交过版本库,但是修改还没有add(文件状态为Changes not staged for commit
      执行git checkout .
    3. 文件提交过版本库,且修改已经add,还没有commit(文件状态为Changes to be committed
      执行git reset .
    4. 文件修改已经commit
      git reset <版本号>或者git reset HEAD~n
  • git merge合并分支

    • git merge <分支名>将某个分支合并到当前分支上
  • git branch列出所有分支,当前分支前面有*

    • git branch -d <分支名>(合并之后可)删除分支
  • git reflog在退出命令行后,想要找到回退前的版本号 【注】HEAD是个指针,指向的是当前版本,回退时仅仅只是移动指针的位置。

  • git remote进行与远程仓库相关的指令操作

    • git remote add origin <repository url>初次添加远程仓库链接
    • git remote set-url origin <repository url>更改origin对应的远程仓库链接
    • git remote rm origin删除origin对应的远程仓库链接
    • git remote -v或者git config get --remote.origin.url或者git remote show origin查看远程仓库信息
  • git config --global --list查看git全局配置信息(配置权重分为system、global、local三个等级)

  • git rm移除暂存区所有的修改

    • git rm <filename>从工作区和暂存区移除某个文件(移除后还未提交,还需要commit才行)
    • git rm --cached <filename>从暂存区删除文件,工作区保留不动
    • rm <filename>仅删除工作区的文件,相当于在文件系统中手动删除(可用checkout恢复)
  • git pull

    • git pull origin master=git fetch+git merge
    • git pull --rebase origin master=git fetch+git rebase与上面不同的是rebase采用的是线性合并
  • git push <远程主机名> <本地分支名>:<远程分支名>

    • git push将当前分支推送到默认主机
    • git push origin将当前分支的修改推送到origin仓库
    • git push origin master将本地的master分支推送到origin的master分支
    • git push -u origin master将本地的master分支推送到origin的master分支,并设置origin为默认主机
  • git stash存储工作现场的修改(包括工作区和暂存区)

    • git stash list列出所保存的工作现场
    • git stash apply恢复工作区的修改
    • git stash apply --index恢复暂存区的修改
    • git stash drop删除工作现场
    • git stash pop恢复并删除工作现场