[TOC]
## Remote Control - 將repository做本機和遠端的連接
### Remotes
當項目傳到GitHub 上面,它會被儲存在GitHub 的主機上。這個項目就變成了remote repository,因為項目現在GitHub 的主機上也有一份了,所以叫做 遠端 remote。當你把**本地電腦上的程序**修改 **push**到 remote,這就叫做同步。
其他人可以透過 pull 你的 remote repository來取得項目的最新版本,儲存到他們的電腦上。這樣一來,大家就可以一起修改同一個專案,而不需要用USB 或Email 等其他方式來取得專案的最新進度。

### 步驟:新建立一個 遠端的 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子模塊
- 工作記錄
- 常用命令
- 幫助
- 資源
- 解疑答惑