[TOC]
## Remote Control - 将repository做本机和远端的连接
### Remotes
当项目传到GitHub 上面,它会被储存在GitHub 的主机上。这个项目就变成了remote repository,因为项目现在GitHub 的主机上也有一份了,所以叫做 远端 remote。当你把**本地电脑上的程序**修改 **push**到 remote,这就叫做同步。
其他人可以透过 pull 你的 remote repository来取得项目的最新版本,储存到他们的电脑上。这样一来,大家就可以一起修改同一个专案,而不需要用USB 或Email 等其他方式来取得专案的最新进度。
![](https://box.kancloud.cn/8220bf54603f3a01f70556a37c7ba93b_839x534.png)
### 步骤:新建立一个 远端的 Remote 代码库 Repository
你想要把**电脑上的版本**和存在GitHub.com上的远端的 remote版本做同步。所以我们先在GitHub 上开启一个新的远端的 remote 程式库 repository。
* 到github.com登入,然后按一下右上角的'+'号来新增一个 代码存储库 repository。
* 取一个名字,最好和你电脑上的项目名称一样,也就是'hello-world',并且给它一个简短的说明。
* 设定为public(公开)。
* 不要勾选'initialize with a README',因为我们已经在电脑上的版本建立了一个档案,叫做'readme.txt'。
* 也不要修改.gitignore 和 license 的设定,保留原先'none' 的设定就好。
* 按下'create repository'!
### README.md(自述文件)、.gitignore 和License(著作权声明)
在开源软体中,这些是你将会常常见到的文件。
* *自述文件* **readme** 通常是用来解释一个程式的功用、使用方法以及如何贡献程式码(但有时候这部份也会另外用一个CONTRIBUTING.md 来说明)。
* *忽略档案表* **.gitignore**则是要忽略的文件清单,这是用来告诉Git,当在做版本控制记录的时候,不要理会这些文件。例如,视频,大文件,框架或者库,或者某个文件中包含密码的时候,我们就不希望Git记录它们下来。
* **License**(著作权声明)是用来声明一个程式可以、或不可以被怎么样的使用。你可以到 [choosealicense.com](http://www.choosealicense.com/)参考一些范例。
但就现在在做的练习来说,我们暂时不需要著作权声明。
### 步骤:把本地上的 代码库 repository 和 远端的 remote 代码库 repository 连接在一起
现在我们已经在 远端 remote(GitHub 上)新建了一个 repository。在程式库 repository 的页面上你会看到一个'Quick Setup' 的部份,确认选择的网址是'HTTP',而不是'SSH',右边的栏位就是这个 远端的 remote 程式库 repository 在GitHub 主机上的位址。
回到命令行,**在我们刚刚初始化过Git 的'hello-world' 的资料夹里头,我们需要告诉Git 这个 远端 remote的位置。同一个Git 项目中,可以有很多不同的远端 remote,所以每一个 远端 remote都需要一个名字**。而最主要、原始的那一个,通常都是叫做`origin`。
```
$ git remote add origin <URL_FROM_GITHUB>
```
>## 版本库地址
>支持三种访问协议:
>* HTTP协议: `https://github.com/gotgithub/helloworld.git` 。(目前主流)
>* Git协议: `git://github.com/gotgithub/helloworld.git` 。
>* SSH协议: `ssh://git@github.com/gotgithub/helloworld.git` 。
你电脑上的程序库 repository 现在知道了项目有一个在GitHub 上的 远端 remote,叫做'origin'。你可以想像这就好像是把一个电话号码配上一个名字一样,这样当你要打电话的时候,就不用记得号码了。
>备注:
如果你有安装**GitHub for Windows**,Git初始化的时候就会直接设定了一个叫做'origin'的远端 remote,所以你不需要新增,只要设定这个'origin' 远端 remote 的网址就好了:
`$ git remote set-url origin <URL_FROM_GITHUB>`
### 步骤:把你的修改 推送 Push 到 远端 remote
接下来你需要 推送 push(传送)所有你在电脑上做的修改到GitHub 上的 远端 remote。通常你会希望远端 remote 的项目版本和本地上的项目版本是一样的。
Git 有一个 分支 branch系统,让你可以同时修改一个程序的不同功能,之后会再深入介绍。系统会预设一个名称给最初的分支 branch,通常就会叫做'master'。当你推送 push(或之后 收取 pull)一个项目的时候,你必须要告诉Git 你想要的是哪一个 远端 remote 上的哪一个 分支 branch 的进度。
也就是说,我们现在想要把'master' 分支 branch 的程序传送到先前新增的'origin' 远端 remote。
```
$ git push origin master
```
完成之后,你现在就可以回到 GitHub 的代码库 repository页面,重新整理。哇哇哇!程序是不是都同步了呢?恭喜你建立了第一个公开的程序库 repository!
### Tips
新增 远端 remote 连结
```
$ git remote add <REMOTE_NAME>
```
帮一个 远端 remote 设置 网址
```
$ git remote set-url <REMOTE_NAME>
```
拉取 Pull 远端 remote 的程式
```
$ git pull <REMOTE_NAME> <BRANCH_NAME>
```
看你有哪些 远端 remote 连结
```
$ git remote -v
```
推送 Push 电脑上的程序到 远端 remote
```
$ git push <REMOTE_NAME>
```
- 介绍
- 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子模块
- 工作记录
- 常用命令
- 帮助
- 资源
- 解疑答惑