# 四 、 Git Hub 為何物 ? ###### tags: `GIT101` `進度筆記` `Lidemy心得``2020六月第三週` ## Repository(共享專案) Git 可以讓大家多人協作共用專案 , 把這個專案上傳上去 , 可以共享這個專案 。 在專案底下開個 .git 資料夾 , 相關的東西放進去 , 就可以達成多人協作 。 ## Git vs GitHub Git 是版本控制的程式 , Git Hub 最主要是可以放 Git Repository 的地方 。 ## GitHub 基本功能 顯示你有幾個檔案:  顯示你有幾個 Branch:  點 Commits 後 , 最右邊的編號可以看到這個 Commit 改了甚麼東西 。 點檔案後可以看到是誰最後修訂程式碼。 issues: 對專案有問題可以提出、留言、討論的地方 。 Explore: 可以看他人的專案 。 ## 上傳你的專案到 GitHub 新建 Repository:  Create a new repository 底下會有 Repository name 要你輸入專案名稱 。 Description: 要你為這個專案描述 。 Private 選項是要收費的 , 因此可選 Public 。 都好了後可以 Create repository(創建專案) 。  ...or create...: 還沒有建立專案的話 , 可以照著步驟做 。 ...or push...: 有專案(repository)的話 , 可以用 `git remote add origin https://github.com/帳號ID/test.git` 直接遠端加入一個專案到 GitHub 上 。 `git push -u origin master` 把本地專案推上去 "-u" 表示設定到 origin master 。 設定好後會推上去你在 GutHub 的專案(推上去前會要登入你的帳號密碼) , 如下:  推上去後可以去你的 GitHub 專案位置看一下同步狀況:  檔案檔案都有出來則表示成功 。 ## Git Push ! ### 修改檔案後如何同步到 GitHub ? 假設你今天修改了一個檔案叫 "code.js" , 用 `git status` 查看會發現它還沒被 staged ,於是你 趕緊用`git commit -am "GitHub"` 指令去 commit 它:  再用指令 `git push -u origin master` "推"上 GitHub:  好了後發現檔案在6/19號新增了 , 並且於修改的時間點上點 GitHub , 或最右邊的 ID 可以進去看修改了些甚麼:  ### 如果你有 branch也想同步到 GitHub ? 假設你新增了一個 branch 叫做 "hey" , 這時候上傳的指令即為 `git push origin hey` :  同樣可以看到你在 GitHub 上有幾個 branches:  ### 如何從 GitHub 線上將 Repository pull 下來 ? 在 GitHub 上也可以改檔案 , 點你欲修改的檔案旁會有個鉛筆 , 進行修改:  修改好後 , GitHub 會幫你產生 Commits , 同時你也可以描述這個檔案有甚麼更動 , 好了後按下 Commit changes ~  同時可以在 GitHub 上看到你修改過的檔案 , 會顯示 Update:  此時也因為本地自己電腦的檔案並不是最新的 , 因此需要從 GitHub Pull 下來! 使用指令 `git pull origin master` 將檔案"拉"回本地電腦 , 如果有衝突就解決!  ### 衝突解決法: 假設你今天在 GitHub 有人跟你本機的電腦都修改了同一份檔案 , 而你在本機電腦操作 CLI 並把檔案"拉"回來的時候發現:  有個衝突(CONFLICT)產生 ! 這時候就可以用 `vim 你修改的檔案名稱` 去看哪裡出了問題:  假設我將第六行修改成這樣: " You:yooooooooooo~ 123123456456 " 。 解決後記得合併 Branch: 用 `git add 名稱` 將檔案 staged 再用 `git status` 看狀況 , 確定沒問題後 , 將檔案加入專案 `git commit -am "專案名稱"` 並將檔案"推"上 GitUub `git push origin master`  如此在 GitHub 上看見的檔案即為你剛剛修改好後的檔案 ! ### 看到不錯的 Repository 要怎麼下載回來 ? 以中文文案排版指北為例 , 其可在 GitHub 上 Clone or Download , 把檔案從伺服器複製一份現有的 Repository 或是直接下載:  如果用 Clone with SSH , 則需要在 USER 電腦上用指令 `git clone git@github.com:xxxxx` 將檔案下載回來 。 ### 如果下載 Repository 時錯誤怎辦 ?  這是因為沒有 SSH Keys ! 你需要設定一個金鑰匙來讓 GitHub 認得你的電腦; push 或是 clone 時,因為 GitHub 還不認得我的帳號是這台電腦的 User,所以要設定 SSH 的公開金鑰來讓 GitHub 認識 , 每台電腦只要設定一次 ,需開啟 CLI 輸入: `$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"` 來創造一個 SSH 鑰匙! 輸入後會發現:  Generating public/private rsa key pair. 表是根據 e-mail 帳號創造新的 SSH Key 。 Enter file in which to save the key (/c/Users/Haku/.ssh/id_rsa): 表示要 User 確認儲存位置 , 沒問題就按下 Enter 。 Enter passphrase (empty for no passphrase): Enter same passphrase again: 需要 User 輸入密碼和再一次輸入相同密碼 , 如果不設定 , 按 Enter 跳過即可 。 如果要把 SSH-Key 金鑰加入 ssh-agent , 以後使用這個金鑰就不用輸入設定的密碼 。 開啟 ssh-agent: `eval "$(ssh-agent -s)"` 將金鑰加入 ssh-agent: `ssh-add -K ~/.ssh/id_rsa` 再次輸入密碼就成功 add-in ! 而在 User 電腦中 , .ssh/ 下會有 id_rsa 、 id_rsa.pub 分別表示私人金鑰與公開金鑰 , 如果需要在 GitHub 上下載他人 Repository 則需要自己的 ssh 以及他人 ssh , 因此必須公開金鑰: `cat ~/.ssh/id_rsa.pub` 輸入後會看到以 "ssh-rsa" 開頭且後面接好幾行的亂碼(?) , 並以"個人信箱"作結尾 , 公開金鑰 , 將其複製後 , 去 GitHub 網站找個人設定 , 並找到 SSH and GPG keys , 並把複製內容貼上 , 就可以上傳公開金鑰到 GitHub 上了 。 成功後再去 clone 公開的 repository 就會看到:  ### 假設想在 GitHub 跟他人或團隊一起合作專案? 如果在本地 commmit 後無法推上 GitHub 的話 , 如果真的覺得專案有地方可以更正的話 , 可以 fork:  按下後 , 會告訴你在 forking , 會被帶到有辦法寫入資料的新專案頁面。 之後你就能在你 clone 回來的專案底下 , 進行修改檔案後 , commit 這個專案 , 並把專案 push 到 GitHub 上你的帳號上 。 流程大致是: 第一步 , clone 合作專案; 第二步 fork 下來 , 這樣就有權限修改(管理員也可以給他權限); 最後 , 修改檔案並 commit 好後 , 把專案 push 上去 ! [](https://lidemy.slack.com/app_redirect?channel=U014VGFNE6S) [](www.linkedin.com/in/jhen-yu-shih-082b29129) [](https://www.instagram.com/haku2zas/?hl=zh-tw)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up