git

219 阅读2分钟

1. git 最小配置

  • 每次变更捆绑信息,收邮件
## 添加配置
git config [--local | --global | --system] user.name 'Your name'
git config [--local | --global | --system] user.email 'Your email'

## 查看配置
git config --list [--local | --global | --system]

## 区别
local:只对某个仓库有效
global: 当前用户所有仓库有效
system: 本系统的所有登录用户有效

2. 建仓库并配置local信息

// 已有仓库
cd [project]
git init

// 新建项目
cd [文件夹]
git init ur_project # 在当前路径下创建同名文件夹
cd ur_project

ls -al #查看所有文件
mkdir 101-GitRunner
cd 101-GitRunner
git init git_learning
cd git_learning
ls -al
git config --local user.name 'xinxin'
git config --local user.email '111111111@qq.com'
git config --local --list
cp ../0-material/readme .
git add readme   // 放到暂存区
git status   
git commit -m 'Add readme'
git status
git log

3. 通过几次commit认识工作区和暂存区

// 复制文件
cp ../0-material/index.html.01 index.html
// 复制文件夹
cp -r ../0-material/images .
// 提交文件&文件夹到暂存区
git add index.html images/

ls -al
git commit -m 'Add index + logo'
git log

mkdir styles
cp ../0-material/styles/style.css.01 styles/style.css

git add styles/
git commit -m 'Add style.css'

cp -r ../0-material/js .
git add js/
git commit -m 'Add js'

// 修改index.html

git add -u
git commit -m 'Add refering projects'

4. 给文件名重命名的简便方法

4.1 普通做法

mv readme readme.md
git add readme.md
git rm readme

git status  

// 文件还在暂存区
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed:readme -> readme.md

// 清除暂存区操作
git reset --hard
// 显示
HEAD is now at bacbf4f Add refering projects

4.1 简便做法

git mv readme readme.md
git commit -m 'Move readme to readme.md'

5. 通过git log查看版本演变历史

// 只显示变更commit
git log --oneline
// 显示最近的4个
git log -n4
// 只显示最近的4个commit
git log -n4 --oneline

// 查看本地有多少分支
git branch -v
// 创建一个分支
git checkout -b temp 9bf0047382ce326a68a4

vi readme
git commit -am 'Add test'
git branch -av

// 查看所有分支的提交历史 / 图形化查看
git log --all
git log --all --graph
git log --all --oneline -n4
git log --all --graph --oneline -n4

6. .git目录

cd .git
ls -al

image.png

  • HEAD 指向一个引用,目前工作分支
// 显示HEAD信息
cat HEAD
// ref: refs/heads/temp  目前工作在temp分支

// 切换分支
git checkout master
// 查看HEAD信息
cat .git/HEAD
// ref: refs/heads/master  目前工作在master分支
  • config git配置信息
    • 修改的话会同步local的配置
cat .git/config
  • refs
cd .git
cd refs
ls -al

image.png

image.png

image.png

  • objects中文件名和指针合并起来是一个hash,存放文件改变