1 安装
python
复制代码
brew install git (mac
sudo apt-get install git (linux
windows: 官网下载
2 配置
python
复制代码
git config --global user.name "xxx"
git config --global user.email "xxx"
3 检查配置
python
复制代码
git config --global --list
4 生成本地ssh key
python
复制代码
ssh-keygen -t rsa -C "your email@xxx.com"
5 查看本地 ssh key
python
复制代码
cat ~/.ssh/id_rsa.pub
6 初始化-git init
python
复制代码
# 在当前目录下初始化一个 Git 仓库
git init
# 创建一个裸仓库
git init --bare
# 使用指定的模板目录初始化仓库
git init --template=<template_directory>
# 设置仓库的共享模式
git init --shared
7 克隆仓库-git clone
python
复制代码
# 克隆远端仓库到本地
git clone <git url>
# 克隆远端仓库到本地,并同时切换到指定分支 branch1
git clone <git url> -b branch1
# 克隆远端仓库到本地并指定本地仓库的文件夹名称为 my-project
git clone <git url> my-project
8 查看状态-git status
9 提交到临时仓库-git add
python
复制代码
# 将所有修改的文件都提交到暂存区
git add .
# 将修改的文件中的指定的文件 a.js 和 b.js 提交到暂存区
git add ./a.js ./b.js
# 将 js 文件夹下修改的内容提交到暂存区
git add ./js
10 提交到本地仓库-git commit
python
复制代码
# 将工作区内容提交到本地仓库,并添加提交信息xxx
git commit -m "xxx"
# 合并上一次提交(用于反复修改)
git commit --amend -m 'xxx'
# 将add和commit合为一步
git commit -am 'xxx'
# 将工作区内容提交到本地仓库,并对上一次 commit 记录进行覆盖
git commit -m "new message" --amend
# 将工作区内容提交到本地仓库,并跳过 commit 信息填写
git commit --amend --no-edit
# 跳过校验直接提交,很多项目配置 git hooks 验证代码是否符合 eslint、husky 等规则,校验不通过无法提交
git commit --no-verify -m "commit message"
11 查看变更-git diff
python
复制代码
# 显示所有未添加至index的变更
git diff
# 显示所有已添加index但还未commit的变更
git diff --cached
12 显示分支- git branch
python
复制代码
# 显示本地分支
git branch
# 显示所有分支
git branch -a
# 显示所有已合并到当前分支的分支
git branch --merged
# 本地分支改名
git branch --no-merged
13 切换分支-git checkout
python
复制代码
# 切换到已有的本地分支 branch1
git checkout branch1
# 切换到远程分支 branch1
git checkout origin/branch1
# 基于当前本地分支创建一个新分支 branch2,并切换至 branch2
git checkout -b branch2
# 基于远程分支 branch1 创建一个新分支 branch2,并切换至 branch2
git checkout origin/branch1 -b branch2
## 当前创建的 branch2 关联的上游分支是 origin/branch1,所以 push 时需要如下命令关联到远程 branch2
git push --set-upstream origin branch2
# 撤销工作区 file 内容的修改。危险操作,谨慎使用
git checkout -- <file>
# 撤销工作区所有内容的修改。危险操作,谨慎使用
git checkout .
14 提交到远程仓库-git push
python
复制代码
# 将当前本地分支 branch1 内容推送到远程分支 origin/branch1
git push
# 若当前本地分支 branch1,没有对应的远程分支 origin/branch1,需要为推送当前分支并建立与远程上游的跟踪
git push --set-upstream origin branch1
# 强制提交
## 例如用在代码回滚后内容
git push -f
15 拉取远程仓库并合并-git pull
python
复制代码
# 若拉取并合并的远程分支和当前本地分支名称一致
git pull
# # 若拉取并合并的远程分支和当前本地分支名称不一致
git pull <远程主机名> <分支名>
## 例如当前本地分支为 branch2,要拉取并合并 origin/branch1,则执行:
git pull git@github.com:zh-lx/git-practice.git branch1
# 使用 rebase 模式进行合并
git pull --rebase
16 取消缓存-git restore
python
复制代码
# 将 a.js 文件取消缓存(取消 add 操作,不改变文件内容)
git reset --staged a.js
# 将所有文件取消缓存
git reset --staged .
17 回滚代码- git reset
python
复制代码
# 将某个版本的 commit 从本地仓库退回到工作区(取消 commit 和 add 操作,不改变文件内容)
## 默认不加 -- 参数时时 mixed
git reset --mixed <commit_sha>
# 将某个版本的 commit 从本地仓库退回到缓存区(取消 commit 操作,不取消 add,不改变文件内容)
git reset --soft <commit_sha>
# 取消某次 commit 的记录(取消 commit 和 add,且改变文件内容)
git reset --hard <commit_sha>
## 以上三种操作退回了 commit,都是退回本地仓库的 commit,没有改变远程仓库的 commit。通常再次修改后配合如下命令覆盖远程仓库的 commit:
git push -f