# Git常用命令
## 1.Git配置
- 全局配置
1.变更Git用户名和邮箱:
```
git config --global user.name "xxx"
git config --global user.email "xxx@xxxxxxx.xx"
```
## 2.日常操作
- 分支
1.分支列表
列出本地分支
```
git branch
```
列出所有分支
```
git branch -a
```
2.切换/创建分支
切换分支
```
git checkout <BranchName>
```
基于当前分支创建新分支
```
git branch <BranchName>
```
基于当前分支创建新分支并切换到新分支
```
git checkout -b <BranchName>
```
3.重命名分支
覆盖已存在的同名分支
```
git branch -M <BranchName> <NewName>
```
不覆盖已存在的同名分支
```
git branch -m <BranchName> <NewName>
```
4.删除分支
删除本地分支
```
git branch -d <BranchName>
```
强制删除分支
```
git branch -D <BranchName>
```
- 添加文件
```
// 添加单个文件
git add readme.md
// 添加所有md文件
git add *.md
// 添加所有文件,包括子目录
git add .
```
- 提交
1.提交更新
```
// 提交更新并添加注释
git commit -m "message"
// 提交所有更新
git commit -a
```
2.追加提交
```
// 追加提交更新并更新注释,不产生新的提交ID
git commit --amend -m "message"
git commit -C head -a --amend
```
3. 撤销提交
撤销尚未提交的更新
```
// 撤销单个文件
git checkout readme.md
// 撤销所有更新
git checkout head .
```
撤销已提交的更新
```
// 撤销上一次commit
git revert head
// 重置到某个commit,保留改动,[d]表示重置到之前第d个commit
git reset --soft head^[d]
// 重置到某个commit,不保留改动
git reset --hard head^[d]
```
- 合并
1.普通合并
```
// 合并并提交
git merge <BranchName>
```
2.压合合并
```
// 当多人合作开发,需要提交多次,并期望合并成一个提交时使用
git merge --squash <BranchName>
// 压合合并但不提交
git merge --squash -no-commit <BranchName>
```
3.挑选合并
```
git cherry-pick <CommitId>
```
- 查看
1.改动文件
查看当前分支改动
```
git status
```
2.提交历史
查看提交历史
```
git log
```
- 远程分支
1.拉取远程分支到本地分支
```
git pull [remote] <BranchName>
```
2.推送本地分支到远程分支
```
git push [remote] <BranchName>
```