git使用

一、基本原理

  1. 暂存区与工作区:

  1. 核心对象
    • commit:记录每次变更
    • tree:文件夹
    • blob:文件(与文件名无关)
    • 查看文件类型:git cat-file -t 文件的哈希值
    • 查看文件内容:git cat-file -p 文件的哈希值

  1. 分离头指针:做的变更没有与某个分支挂钩。
    • 优点:尝试开发一些新功能,测试性能,可以随时丢弃。
    • 缺点:遗忘后切换分支,便会丢失数据。
    • Head指向某一次提交上。

二、常用命令

  1. config配置:

    • 初始化global属性

      1
      2
      git config --global user.name 'your_name'
      git config --global user.email 'your_email'
    • 显示config配置,加—list

      • git config --local : 指对某个仓库有效
      • git config --global:所有仓库
      • git config --sys:对系统中所有登录用户有效
  2. 建Git仓库,初始化。

    • 把已有的项目纳入Git管理

      1
      2
      cd 项目代码所在目录
      git init
    • 新建项目直接用Git管理

      1
      2
      3
      cd 某个文件夹
      git init your_project # 会在当前路径下,创建一个和项目名称同名的文件夹
      cd your_project
  3. 添加到暂存区:git add 文件 # 添加到暂存区

    • 查看暂存区状态:git status
  4. 提交代码:git commit -m"提交说明"

  5. 查看提交历史:git log

    • 简洁查看:git log --oneline
    • 查看最近的几次:git log -n?
    • 查看所有分支:git log --all
    • 图像化显示:git log --all --graph
  6. 图形化工具:gitk --all

  7. 修改文件名:git mv 原文件名 新文件名

  8. 删除某一个文件:git rm 文件名

  9. 分支处理:

    • 创建分支:git branch (branchname)
    • 切换分支:git checkout (branchname)
    • 列出分支:git branch -av
    • 删除分支:git branch -d (branchname)
  10. commit内容做变更

    • 上一次提交:git commit --amend
    • 修改任意一次提交:git rebase -i 前一版本的hash值
  11. 合并多次提交的版本

    • git rebase -i 前一版本的hash值
    • 将需要合并的版本的pick修改为s

  12. 查看差异:

    • 查看工作区与暂存区的区别:git diff
    • 暂存区与HEAD比较:git diff --cache

    • 比较任意commit之间的差异:git diff commit的地址A commit的地址B
  13. 修改暂存区文件:git reset;修改工作区文件:git checkout

    • 取消暂存:git reset HEAD
    • 将暂存区所有数据恢复成HEAD:git reset HEADgit reset --hard
    • 将暂存区某一数据恢复成HEAD:git reset HEAD -- (filename)
    • 将工作区某一 文件恢复到暂存区状态:git checkout -- (filename)
  14. 删除某几次提交:git reset --hard 前一个commit地址

  15. 当手头出现紧急任务时,需要修改当前工程时。我们使用git stash将工作区保存起来,处理完紧急任务后使用git stash applygit stash pop弹出之前的任务。

  16. 修改.gitignore文件,可以控制保存哪些内容。