Git常用知识点整理

299 阅读3分钟

一、Git基础

1. config的三个作用域

1. 缺省等同于local
  • $ git config --local #local只对某个仓库有效
  • $ git config --global #global对当前用户所有仓库有效
  • $ git config --system #system对系统所有登录的用户有效
2. 显示config的配置,加--list
  • $ git config --list --local
  • $ git config --list --global
  • $ git config --list --system

2. 建Git仓库

1. 把已有的项目代码纳入Git管理
  • $ cd 项目代码所在的文件夹
  • git init
2. 新建的项目直接用Git管理
  • cd 某个文件夹
  • git init your_project # 会在当前路径下创建和项目名称相同的文件夹
  • cd your_project
graph TD
A(工作目录) --> |git add files|B(暂存区) -->|git commit|C(版本历史)

3. Git常用命令

1. git commit:提交变更
  • git commit -m 'log':提交变更,日志为log
  • git commit -am 'log':直接将变动提交到版本库中,不经过暂存区(不建议使用)
  • git commit --amend:修改最近一次提交的log日志
2. git status:显示工作目录和暂存区的状态
3. git add:添加修改到暂存区
  • git add .:提交所有的变化(Git1.x版本中不包含被删除的文件)
  • git add -u:提交被修改和被删除的文件到暂存区,不包括新文件
  • git add -A:提交所有的变化
4. git log:查看当前分支的git提交日志
  • git log --oneline:查看当前分支的git提交日志(简洁版本)
  • git log -n3:查看最近的3次日志,查看几次就输入几
  • git log --all:查看所有分支的提交日志
  • git log --graph:图形化查看日志
5. git branch:查看本地分支
  • git branch -r:查看远程分支;
  • git branch -a:查看本地和远程分支;
  • git branch -v:查看本地分支信息;
  • git branch -vv:查看更多本地分支信息;
  • git branch -av:查看所有分支信息;
  • git branch -m oldbranch newbranch:重命名分支;
  • git branch -M oldbranch newbranch:强制重命名分支(如果newbranch分支已存在,那么采用-M强制重命名为newbranch)
6. git checkout:检出分支
  • git checkout -b branchName:新建一个branchName分支,并切换到该分支,等同于两条命令的简写
    • git branch branchName
    • git checkout branchName
  • git checkout branchName:切换到branchName分支
7. git branch -d:删除分支
  • git branch -d branchName:删除本地分支;
  • git branch -d -r branchName:删除远程分支;
  • git branch -D branchName:强制删除分支;
8. git diff :比较两个commit的差异
  • git diff 哈希值1 哈希值2:哈希值1处提交与哈希值2处提交的区别
  • git diff HEAD HEAD^:HEAD和HEAD父节点的区别
9. git rebase:
  • git rebase -i commitName:

4. 目录.git下文件作用

1. HEAD

指向当前的工作路径,例如:ref: refs/heads/master表示处于master分支

通过git checkout test命令可以切换到test分支,切换后,HEAD内容会变换为ref: refs/heads/test

2. config

用于存储本地仓库相关的配置信息,例如:

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[user]
	name = sunjie
	email = 13761719246@163.com
3. refs目录
  • refs/heads:存放分支信息
  • refs/tags:存放tag信息

里面存储的是各个分支和tag的SHA-1 值

git cat-file -t 哈希值:查看版本库对象的类型,git中类型一般就commit,tree,blob这三种,blob就是文件

git cat-file -p 哈希值:查看版本库对象的内容

git cat-file -s 哈希值:查看版本库对象的大小

4. objects目录

文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹名,后38位做文件名。存储的是分支文件的tree和blob等

5. ^和~的区别
  • ^n:某个commit的第n个父commit
  • ~n:沿着commit树主干向上搜索n层,并获得该层的第一个commit