# git 基础

# 1.配置

  • 增加配置列表
git config --global zhou.name '123'
1
  • 改配置列表
git config --global --replace-all user.email "输入你的邮箱"
git config --global --replace-all user.email "输入你的用户名"
1
2
  • 删配置列表
git config --global --unset zhou.name
1
  • 查看配置列表
git config --list/git config -l
1

# 2.提交流程

工作区->暂存区->历史区->远程仓库 --这里默认为主分支

# 2.1 工作区-->暂存区(第一次提交要初始化本地仓库)

  • 初始化本地仓库
git init
1
  • 将工作区修改的内容添加到暂存区(单个文件、整个目录、所有文件)
git add [文件名称]/git add ./git add *
1

# 2.2 暂存区-->历史区

  • 将暂存区中修改的内容提交到历史区(单个文件、全部文件)
git commit [文件名称] -m '提交的注释'/git commit -m '提交注释'
1
  • 没有添加 -m
    • i 进入编辑模式
    • :wq 保存并退出
    • :ql! 退出

# 2.3 操作

  • 创建文件
touch [文件名称]
1
  • 查看工作区和暂存区那些文件修改(红色),查看暂存区和历史区那些文件修改(绿色)
git status -s/git status
1
  • 查看工作区和暂存区内容差异
git diff
1
  • 查看工作区和历史区内容差异
git diff --cached
1
  • 查看历史区历史记录(如提交远程仓库记录)
git log/git log --oneline
1
  • 前看看是否有分支
git branch
1

# 3.代码回退

# 3.1 git 没有关闭时代码回退

  • 回退所有区域(历史区、暂存区、工作区)
git reset --hard
1
  • 回退历史区和暂存区
git reset --mixed
1
  • 回退历史区
git reset --soft
1

# 3.2 git 关闭后时代码回退

  • 查看历史区版本号
git reflog
1
  • 把历史区重置到(上一个提交、上上个提交、指定编号)
git reset --hard HEAD^/git reset --hard HEAD^^/git reset --hard HEAD@{编号}
1
  • 把历史区重置到指定版本
git reset --hard [编号]
1
  • 用历史区的内容覆盖暂存区的内容
git reset HEAD --[文件名称] /git reset HEAD -- .
1
  • 用暂存区的内容覆盖本地工作区的内容(单个文件、所有文件)
git checkout -- [文件名称]/git checkout -- .
1

# 4.分支提交

  • 有多个分支的情况:bug 分支、需求分支

  • 查看分支

git branch
1
  • 创建分支
git branch [分支名称]
1
  • 切换分支
git checkout [分支名称]
1
  • 合并分支(master 分支没有改动)
git merge [分支名称]
1
  • 删除分支
git branch -d [分支名称]
1
  • 创建分支并切换分支
git checkout -b [切换的分支名称]
1
  • 合并分支(master 分支有更改,和现有的分支冲突)
git merge [分支]//出现冲突,代码中去解决冲突
git commit -m '分支合并'
1
2
  • 分支提交日志
git log --graph --oneline
1

# 5.暂存工作内容

  • 需求任务开发到一半,临时有一个紧急 bug 需要修复

  • 把当前的工作区和暂存区保存到一个地方,并且用最新的历史区覆盖当前的工作区和暂存区

git stash
1
  • 创建 bug 分支改 bug,提交后切换 master 分支合并
git merge bug
1
  • 列出所有的储存区
git stash list
1
  • 应用不删除
git stash apply
1
  • 删除
git stash drop
1
  • 应用删除
git stash pop
1

# 6.报错

  • 提交远程仓库报错

    fatal: remote origin already exists.
    
    1
    • 解决方法:删除历史区重新提交
  • ssh 使用公钥授权不通过的问题解决

    • 用命令行 push 提交直接输入密码