[TOC]
# GUI
https://www.syntevo.com/smartgit/
https://www.git-tower.com/windows/
# 工作之Git
`user.name, user.email `肯定是你自己在公司内的帐号和邮箱啊. 一般公司都有内部的人事管理系统吧, 用这个账户名就可以了, 邮箱也尽量用公司内部的个人邮箱吧.
如果你们公司有自己搭建的 Git 服务器, 那么可以把自己电脑的 ssh 公钥设置上, 这样在 `clone` 时就不需要每次都输入帐号密码了. 代码肯定是使用 `git clone` 命令拉下来的。至于你有没有 git 仓库的权限, 那问问你的 leader 吧.
关于 Git 的分支管理, 和常用的分支有哪些, 推荐你看看这篇文章: [Git分支管理策略](http://www.ruanyifeng.com/blog/2012/07/git.html)
## 配置多Git账号
只有一个Git平台的话,配置Git 的全局用户和邮箱就可以了:
```
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
```
配置全局用户和邮箱完成后,我们可以查看 `C:/Users/你的用户名/.gitconfig` 即可看到配置,内容大概如下:
```
name = Kevin_Smile
email = 123456789@qq.com
```
到此配置全部完成,接下来验证下SSH-KEY配置是否成功,在命令窗口中输入如下命令(我是使用的码云平台):
1. 码云
```
ssh -T git@git.oschina.net
```
2. github
```
ssh -T git@git.oschina.net
```
用公司的分配的 email,[生成公司的所用的 SSH-Key](http://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair);
输入`work_id_rsa`(给你公司的SSH-Key起一个可以区分的名字)
进入 `C:/Users/你的用户名/.ssh`,新建一个文本名为`config`文件:
```
touch config
```
添加`config`配置文件用于区分多个 SSH-Key
```
# github
Host github.com # git 域名 map,可以使用这个别名做克隆和更新
HostName github.com # git服务器
User xw@mail.com # git 账号
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa # 用户的 private key
# 公司(Gerrit)
Host gitlab # gitlab别名,可以使用这个别名做克隆和更新
HostName git-inner.yunxuetang.com.cn
User xuwei@yxt.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/work_id_rsa
```
> 每个账号单独配置一个**Host**,每个**Host**要取一个别名,每个Host主要配置**HostName**和**IdentityFile**两个属性即可
>
> **Host**的名字可以取为自己喜欢的名字,不过这个会影响git相关命令,例如:
**Host**mygithub 这样定义的话,命令如下,即git@后面紧跟的名字改为**mygithub**
git clone git@**mygithub**:PopFisher/AndroidRotateAnim.git
>
> **HostName** 这个是真实的域名地址
**IdentityFile** 这里是id\_rsa的地址
**PreferredAuthentications** 配置登录时用什么权限认证--可设为`publickey,password publickey,keyboard-interactive等`
**User** 配置使用用户名
## 测试
~~~
$ ssh -T git@gitee.com
$ ssh -T git@github.com
~~~
还可以为每个项目分别配置账户信息(不然会默认使用你的全局用户信息),进入项目文件夹后:
```
git config --local user.name "你的名字"
git config --local user.email "你的邮箱"
```
单个项目:`git config --local -l`.
全局配置:`git config --global -l`
最后,进入项目文件夹下的`.git`文件夹查看`config`文件内容:
```
[user]
name = YanZhenjie
email = smallajax@foxmail.com
```
[如何切换多个GitHub账号](https://www.jianshu.com/p/0ad3d88c51f4)
# Git 撤销冲突,用远端代码覆盖本地
有个命令可以将代码还原到指定历史:
```
➜ data git:(init) ✗ git fetch --all
正在获取 origin
➜ data git:(init) ✗ git reset --hard origin/dev
HEAD 现在位于 612af0e update
➜ data git:(init) git pull
Already up-to-date.
```
**备注:** `git fetch` 只是下载远程的库的内容,不做任何的合并`git reset`把`HEAD`指向刚刚下载的最新的版本
## 团队的大小
2个人以上的项目
关于分支的建立,一个master分支用于最终发布,一个develop分支是开发主分支,然后每个人的开发任务一个feature分支,个人开发测试完成,可以合并到develop分支,基于develop分支发beat版本。
2个人以下的项目
一个master分支用于最终发布,一个develop分支就可以,开发时直接都在develop分支上开发
这里面主要的是沟通成本和管理成本。
# 代码检视工具 Gerrit
- 介绍
- 1. Get Git - 安装并且设置Git
- 2. Repository - 建立一个本地的repository
- 3. Commit to it - 检查状态、新增或修改commits
- 4. GitHubbin - 注册GitHub帐号
- 5. Remote Control - 将repository做本地和远程的连接
- 6. Forks and Clones - Fork和clone一个开源的计划
- 7. Branches aren't just for Birds - 建立一个feature branch
- Git分支开发模型
- 8. It's a Small World - 邀请并和别人合作
- 9. Pull, Never Out of Date - 利用Push和pull来和GitHub.com同步
- 10. Requesting You Pull Please - 建立一个pull request
- 11. Merge Tada - Merge和删除branches
- 学会 GitHub
- GitHub 使用指南
- git 与 github 模板配置
- GitHub Actions
- 实用技巧
- Git Flow
- Submodule子模块
- 工作记录
- 常用命令
- 帮助
- 资源
- 解疑答惑