Git 快速上手
基本配置
路径 C:\Users\用户名\.gitconfig
ini
[user]
name = izhichao
email = admin@zhichao.org
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[init]
defaultBranch = master远程仓库
HTTPS 协议
修改 .git/config 中 url 项为
sh
url=https://用户名:密码@github.com/用户名/仓库名.git配置代理
修改 C:\Users\用户名\.gitconfig 文件
[http]
proxy = http://127.0.0.1:7890
[https]
proxy = http://127.0.0.1:7890SSH 协议
sh
ssh-keygen -t rsa -C "注册邮箱"打开相应路径下 .ssh 文件夹中的 id_rsa.pub ,复制里面的key
上传至 Github - Account - Setting 中
配置代理
新建 C:\Users\用户名\.ssh\config 文件
Host github.com
User git
Port 22
Hostname github.com
IdentityFile "C:\Users\用户名\.ssh\id_rsa"
TCPKeepAlive yes
ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p
Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "C:\Users\用户名\.ssh\id_rsa"
TCPKeepAlive yes
ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p常用命令
sh
# Git仓库初始化
$ git init
# 查看当前工作状态
$ git status
# 添加到缓存区
$ git add 文件名
$ git add 文件名1 文件名2 文件名3 ......
$ git add . # 添加当前目录到缓存区中
$ git add -A # 提交所有文件
# 提交至版本库
$ git commit -m "注释"
# 克隆线上仓库到本地
$ git clone 线上仓库地址
# 提交到线上仓库
$ git push
# 拉取线上仓库
$ git pull版本回退
sh
# 查看历史版本
$ git log
$ git log --pretty=oneline
$ git reflog # 查看所有历史版本
# 回退操作
$ git checkout filename # 工作区回滚
$ git reset HEAD^1 # 撤销最后一次提交Branch
sh
# 查看分支
$ git branch
# 创建分支
$ git branch 分支名
# 切换分支
$ git checkout 分支名
$ git checkout -b 分支名 # 创建并切换
# 删除分支
$ git branch -d 分支名
# 合并分支
$ git merge 被合并的分支Commit
Commit 合并
git log获取需要合并的前一个 commit idgit rebase -i [startpoint] [endpoint]- 根据提示将需要合并的 commit 前的 pick 修改为 squash
- 注释多余的 commit 描述
Commit 规范
chore:构建过程、工具、库依赖等变更,不影响源代码build:影响构建系统或外部依赖项的更改(例如:gulp、broccoli、npm)ci:对 CI 配置文件和脚本的更改docs:文档变更(例如注释、文档添加或更新)feat:新功能(新增功能或功能增强)fix:修复 bugperf:提高性能的代码更改refactor:重构代码,既不修复错误也不添加新功能style: 代码样式变更,不影响代码逻辑(例如格式化代码、空格、分号等)test:添加或修改测试代码
Commit 批量修改
sh
# change.sh
git filter-branch -f --env-filter '
OLD_EMAIL="old@zhichao.org"
CORRECT_NAME="izhichao"
CORRECT_EMAIL="new@zhichao.org"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags开启大小写敏感
sh
git config core.ignorecase false --global






