[TOC]
## GitHubbin - 注册GitHub帐号
~~自己用[码云](http://git.oschina.net/),进行实际操作,但文章依然使用了Github名称。~~
### 团结力量大
目前为止你建立的 repository只存在你自己的本地电脑上,虽然方便,但若想要与别人分享或合作时就显得困难许多了。别担心,这就是为什么我们需要GitHub!
### 步骤:建立一个GitHub 帐号
GitHub 是一个让大家不论在哪里都可以上传他们的Git 项目,并轻松合作的网站。
前往GitHub并注册一个免费的帐号。 **水啦!欢迎欢迎!**
### 步骤:告诉Git 你的GitHub 帐号
告诉Git你的GitHub帐号,这个GitHub帐号将会在之后的内容中用到。注意输入时必须与你在GitHub上建立的完全一致──**大小写必须一致**。
告诉Git 你的GitHub 帐号:
```
$ git config --global user.username <USer_NamE>
```
### 连接线上 Git 托管平台
公钥是git识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与git服务器建立联系,然后您就可以很方便的将本地代码上传到git服务器上,或者将git服务器上代码下载到本地了。
>其中`~/.ssh/id_rsa`是私钥文件,`~/.ssh/id_rsa.pub`是公钥文件。注意私钥文件要严加保护,不能泄露给任何人。
在**Mac**上打开终端输入:
~~~
$ open ~/.ssh
~~~
即可,打开文件夹,就可以找到`id_rsa.pub`文件了。
你可以按如下命令来生成**sshkey** :
```
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key (最好设置个好名字,如id_rsa.github和id_rsa.github.pub)
```
查看你的public key,并把他添加到 Git @ OSC [SSH key添加地址](#)
```
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
```
添加后,在终端(Terminal)中输入
```
ssh -T git@git.oschina.net
```
若返回
```
Welcome to Git@OSC, yourname!
```
则证明添加成功。
### GIT多个项目使用不同的公钥和私钥
前几天遇到个情况,在github上有多个项目,在公司内部也有两个用Git管理的项目,这几个都要用,而
且它们的公钥和私钥还都不一样,肿么办????
1、新建user2的SSH Key
新建SSH key:
```
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "mywork@email.com"
```
新建工作的SSH key
设置名称为id_rsa_work
```
Enter file in which to save the key (C:/Users/Administrator/.ssh/id_rsa): id_rsa_work
```
2、新密钥添加到SSH agent中因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:
~~~
$ ssh-add ~/.ssh/id_rsa_work
~~~
如果出现`Could not open a connection to your authentication agent`的错误,就试着用以下命令:
打开ssh-agent:
```
$ ssh-agent bash
```
添加私钥:
```
$ ssh-add ~/.ssh/id_rsa_work
```
3、修改config文件
在`~/.ssh`目录下找到config文件,如果没有就创建:
~~~
$ vim config
~~~
----------------------------------------------
```
# 该文件用于配置私钥对应的服务器
# Default github user(first@mail.com)
Host "github.com"
HostName "github.com"
User "git"
IdentityFile "~/.ssh/id_rsa"
# second user(second@mail.com)
# 建一个github别名,新建的帐号使用这个别名做克隆和更新
Host "github2"
HostName "github.com"
User "git"
IdentityFile "~/.ssh/id_rsa_work"
```
----------------------------------------------
然后测试一下:
```
$ ssh github2
```
如果到这里你没有成功的话:
(`ssh -vT git@github.com`
**-v** 是输出编译信息,然后根据编译信息自己去解决问题吧。就我自己来说一般是config里的host那块写错了。)
#### 补充一下
如果之前有设置全局用户名和邮箱的话,需要`unset`一下
```
git config --global --unset user.name
git config --global --unset user.email
```
然后在不同的仓库下设置**局部的用户名和邮箱**
比如在公司的repository下
```
git config user.name "yourname"
git config user.email "youremail"
```
在自己的github的仓库在执行刚刚的命令一遍即可。
这样就可以在不同的仓库,已不同的账号登录。
### git不支持空目录的提交
由于 git 在设计上就没有考虑空文件 [Kernel.org: Git FAQ](https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F)
建议你在添加目录的时候添加 `.keep` 之类的占位文件或者初始化`README.md`文件,空文件即可。
防止在一些开启SVN支持的网站上,`commit`提交出现空文件错误!
- 介绍
- 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子模块
- 工作记录
- 常用命令
- 帮助
- 资源
- 解疑答惑