[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子模塊
- 工作記錄
- 常用命令
- 幫助
- 資源
- 解疑答惑