# Git常用开发操作

## 开发流程

### `1.`创建分支

&#x20;从主分支`master`创建`dev`分支并切换，那么我们就开始在`dev`分支上进行开发工作

```bash
# 这个可以
git checkout -b dev
# =>等价于
git branch dev #先创建
git checkout dev #再切换

# 这个也可以-switch切换-也更好理解
git switch -c dev
```

### 2.切换主分支

&#x20;在dev上开发完成，`add`，`commit`等都执行完成，就切换回主分支`master`

```bash
git checkout master

#switch切换-也更好理解 建议使用
git switch master
```

### 3.合并分支 <a href="#id-3-he-bing-fen-zhi" id="id-3-he-bing-fen-zhi"></a>

切换回主分支`master`,合并`dev`分支至当前分支`master`

```bash
#把dev分支的工作成果合并到master分支
git merge dev
```

### 4.删除分支 <a href="#id-4-shan-chu-fen-zhi" id="id-4-shan-chu-fen-zhi"></a>

已然合并了分支`dev`,那么`dev`分支就可以丢弃了

```bash
git branch -d dev
```

### 5.推送 <a href="#id-5-tui-song" id="id-5-tui-song"></a>

```bash
git push -u origin master
```

### 6.友情提示 <a href="#id-6-you-qing-ti-shi" id="id-6-you-qing-ti-shi"></a>

因为创建、合并和删除分支非常快，所以`Git`鼓励你使用分支完成某个任务， 合并后再删掉分支，这和直接在master分支上工作效果是一样的，但过程更安全。

查看分支：`git branch`

创建分支：`git branch <name>`

切换分支：`git checkout <name>` `git switch -c dev`

创建+切换分支：`git checkout -b <name>`

合并某分支到当前分支：`git merge <name>`

删除分支：`git branch -d <name>`

## 其它命令

### 1.注册用户名 邮箱 <a href="#id-1-zhu-ce-yong-hu-ming-you-xiang" id="id-1-zhu-ce-yong-hu-ming-you-xiang"></a>

```bash
git config --global user.name "luchong1999@outlook.com" 

git config --global user.email "luchong1999@outlook.com"
```

### 2.初始化 <a href="#id-2-chu-shi-hua" id="id-2-chu-shi-hua"></a>

```bash
git init
```

### 3.暂存区 <a href="#id-3-zan-cun-qu" id="id-3-zan-cun-qu"></a>

```
git add readme.txt
```

### 4.暂存区至工作区 <a href="#id-4-zan-cun-qu-zhi-gong-zuo-qu" id="id-4-zan-cun-qu-zhi-gong-zuo-qu"></a>

```bash
git commit -m "wrote a readme file"

#单解释一下git commit命令，
#-m后面输入的是本次提交的说明，可以输入任意内容，当然最好是有意义的，
#这样你就能从历史记录里方便地找到改动记录。

#嫌麻烦不想输入-m "xxx"行不行？确实有办法可以这么干，但是强烈不建议你这么干，因为输入说明对自己对别人阅读都很重要。
#实在不想输入说明的童鞋请自行Google，我不告诉你这个参数。

#git commit命令执行成功后会告诉你，1个文件被改动（我们新添加的readme.txt文件），
#插入了两行内容（readme.txt有两行内容）。
```

### 5.日志 <a href="#id-5-ri-zhi" id="id-5-ri-zhi"></a>

```bash
git log

#如果嫌输出信息太多，看得眼花缭乱的，可以试试加上--pretty=oneline参数
git log --pretty=oneline

#log中有很长一段字符串，是一个SHA1计算出来的一个非常大的数字，用十六进制表示
```

### 6.回退 <a href="#id-6-hui-tui" id="id-6-hui-tui"></a>

```bash
#我们要把当前版本“append GPL”回退到上一个版本“add distributed”，就可以使用git reset命令
git reset --hard HEAD^

HEAD is now at ea34578 add distributed

git reset --hard 3628164
HEAD is now at 3628164 append GPL

# 版本号没必要写全，前几位就可以了，Git会自动去找。
# 当然也不能只写前一两位，因为Git可能会找到多个版本号，
# 就无法确定是哪一个了。
```

### 7.查看使用过的命令 <a href="#id-7-cha-kan-shi-yong-guo-de-ming-ling" id="id-7-cha-kan-shi-yong-guo-de-ming-ling"></a>

```
git reflog
```

### 8.状态 <a href="#id-8-zhuang-tai" id="id-8-zhuang-tai"></a>

```
git status
```

### 9.删除文件 <a href="#id-9-shan-chu-wen-jian" id="id-9-shan-chu-wen-jian"></a>

```
git rm test.txt
git commit -m "remove test.txt"
```

### 10.git与远程仓库建立联系 <a href="#id-10git-yu-yuan-cheng-cang-ku-jian-li-lian-xi" id="id-10git-yu-yuan-cheng-cang-ku-jian-li-lian-xi"></a>

以`github`为例

```
git remote add origin https://github.com/luchong0813/MicroChat.git
git remote add origin git@github.com:luchong0813/MicroChat.git
```

### 11.推送远端 <a href="#id-11-tui-song-yuan-duan" id="id-11-tui-song-yuan-duan"></a>

```
git push -u origin master
```

### 12.克隆代码 <a href="#id-12-ke-long-dai-ma" id="id-12-ke-long-dai-ma"></a>

现在，远程库已经准备好了，下一步是用命令`git clone`克隆一个本地库

```
git clone https://github.com/luchong0813/MicroChat.git
```
