本地仓库操作
概念理解
- 不跟踪 ignored (工作区可自行保留或编码, 但 git 不会去跟综)
- 未暂存 unstaged (未被忽略、且相比暂存区发生了变化, 包括以下三种)
- 未追踪 untracked
- 已修改 modified
- 已删除 deleted
- 已暂存 staged (准备提交)
- 已提交 committed (保存在了本地的数据库)
常用指令
一、状态修改类
1. 忽略跟踪 ignored
根据规则(根目录下的 .gitignore 文件)忽略对指定内容的跟踪
# 忽略全部 todo 文件夹
todo
# 忽略根目录下的 node_module 文件夹, 及全部子内容
/node_module
# 忽略文件夹全部子目录下的指定内容
/doc/**/*.js
# 忽略文件夹直接子目录下的指定内容
/build/*.js
# 对指定内容 排除忽略
# !build/main.js
2. 暂存 unstaged => staged
加入下次提交队伍; 包括内容的 新增 / 修改 / 删除 等;
# 指定文件
git add ./index.js
# 指定文件夹全部子内容
git add ./src/**/*
# 全部修改
git add .
git add *
3. 重命名 / 移动位置
# 相当于三步操作 1.删除 prev ; 2.新增 target ; 3. 暂存这两步修改
git mv [prev-file] [target-file]
4. 从暂存区撤回 staged => modified
git reset HEAD index.js
5. 移除
# 从已提交中移除并从磁盘中删除 committed => deleted
git rm ./index.js
# 当暂存区有修改时, 强制删除 committed => deleted
git rm -f ./index.js
# 仅从暂存区移除;committed / staged => untracked
git rm --cached readme.txt
6. 提交 staged => committed
git commit -m "commit msg"
7. 暂存+提交 modified => committed
git commit -a -m "commit msg"
8. 修改提交
- 修改 commit 内容,通过
--amend
补充进去; 不增加 commit 数量; - 修改 commit 的备注信息; 通过
-m
git commit -m 'initial commit'
git add forgotten_file
git commit --amend -m "modify commit"
9. 撤销提交
// Todo:待补充
二、状态查看类
1. 当前 整体状态
# 新建未跟踪 / 修改未暂存 / 暂存未提交 / 领先的提交数量
git status
2. 当前 未暂存内容
git diff
3. 当前 已暂存未提交的内容
git diff --cached
4. 已提交信息(包括全部提交历史)
# 全部信息
git log
# 查看最近2次提交的差异
git log -p -2
# 指定信息;表格化
git log --pretty=format:"%h - %an, %ar : %s"
# 数据化: 增、删、改的代码行数
git log --stat
二、本地仓库 <==> 远程仓库操作
连接
- 设置用户
git config --global user.name [user name]
git config --global user.email [user email]
- 生成 sshKey, 授权操作
# 生成公钥
ssh-keygen -t rsa -b 4096 -C [user_email]
cat ~/.ssh/id_rsa.pub
# 复制后, 粘贴到 github网站个人设置页 => setting => SSH and GPG keys
- 新建远程仓库
- 在 github 网站操作
- 新建本地仓库
git init
- 连接本地仓库和远程仓库 (如果提示无权限, 检查第 1、2 步)
# short-name 默认是 origin
git remote add [short-name] [github-repo-url]
常用操作
拷贝 远程 => 本地
git clone [github-repo-url]
拉取代码
git pull [short-name] [branch-name]
推送代码
git push [short-name] [branch-name]
分支管理
// Todo:待补充