# GIT
Git 全局设置
```
git config --global user.name "李吉"
git config --global user.email "81020302@qq.com"
```
#### 版本回退
```
回到过去 回到未来
$ git reset --hard commit_id // commit_id就是要回退的版本
$ git log // 可以查看提交历史,以便确定要回退到哪个版本
$ git reflog // 查看命令历史,以便确定要的哪个版本
```
#### 公钥生成
```
// 生成 sshkey
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
// 查看公钥 复制生成后的 ssh key即可添加
cat ~/.ssh/id_rsa.pub
// 如果是 码云,以下命令,输入后,再输入yes,即可加入信任列表
ssh -T git@gitee.com
```
#### Git标签
```
// 查看标签列表
git tag
// 打标签
git tag -a v4.0.5 -m "version 4.0.5"
// 推送
git push origin master --tags
// 删除远程标签
git push origin master :refs/tags/v4.0.5
// 删除本地标签
git tag -d v0.8
```
#### 暂存区
```
git stash list // 列出所有
git stash drop stash@{0} 这是删除第一个队列
git stash clear // 清理所有
```
#### 分支
~~~
# 拉取远程分支到本地
$ git checkout -b 本地分支名 origin/远程分支名
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
~~~