iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
自我挑戰組

非本科之30天Ruby / Rails學習筆記系列 第 28

Day28: 用個Github來版本控制吧

之前都在寫Rails相關的內容,其實版本控制也是重要的一環,就來換個口味寫個GitHub吧~

登入GitHub後第一步

加號點開後,請點選紅框 New repository 新增專案

輸入自訂的檔名,依照你想要公開(Public)或私人(Private)去選擇後,按下方 Create repository

選擇透過 HTTPS / SSH 的方式來上傳檔案

HTTPS是加密網站,使用上囉嗦(每次都要輸入帳密)但設定上簡單。
SSH則是公鑰跟私鑰,但這設定上要key一些指令,這不是此次討論的範圍,有興趣請點這裡設定。

Create a new repository 顧名思義就是直接產生一個新的專案,而 Push an exisiting repository 意思是與直接本地端的專案做版控,此次我們選擇後者。

git remote add origin https://github.com/LouiswuYJ/testing.git
     遠端   新增 代名詞                   位置
-> 將本地端的git版本整包與GitHub上連結

git push -u origin master
             代名詞  分支  
-> 新增一個代名詞節點,這裡的-u 代表設定上線(upstream),把自己本地端的分支(master)推到網站上,且u設定一次之後,orign 就已經變成預設值,所以以後只要git push 即可。

git remote -v
->查看remote狀況

再開始之前,先隨便找一個有git版控的檔案,若沒有的話再建一個就好。

開終端機到指定資料夾後:
git init    -> 初始化
touch 檔案  ->新增檔案
git add .  ->將全部檔案 add
git commit -m "自訂" ->commit後產生第一個分支

本地端我先設2個(commit)節點後,下上述兩個指令後就會與GitHub上做連結。

git remote add origin https://github.com/LouiswuYJ/testing.git
$ git push -u origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 407 bytes | 135.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://github.com/LouiswuYJ/testing.git
* [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

git push (從本地推上遠端)

git push origin master
git push -f 
直接檔案蓋掉全部,建議要用之前最好先告知你的其他團隊成員,不然就...

新增了檔案03.html並commit後push到Github,本地端的 master 分支,推上GitHub origin 這個遠端節點,並且在遠端形成一個 master 分支,原本GitHub上的2個commit就變3個了。

git fetch (從遠端抓下來)

git fetch origin master

去 origin 這個遠端節點,抓上面 master 分支的內容,並且在我的電腦上建立一個 origin/master 分支,但並不會merge。
(白話文:把檔案抓過來,但不會主動合併)
情境1: 新增一個檔案後儲存commit變4個,此時用 fetch 後本地就會如下圖所示。

情境2:
這邊看到一個origin/master的節點(fetch抓下來)

這時候去merge,就會變這樣

git pull = git fetch + git merge

git pull origin master

去 origin 這個遠端節點,去抓上面 master 分支的內容,並且在電腦上建立一個 origin/master 分支,同時與我本機的 master 分支進行合併
白話文: git pull 就是 fetch後再merge的結果。

git clone + Git網址

把某個 Git 專案,整包檔案完整複製到自己電腦。

git clone 網址

共同合作

在團隊分工若遇到不能push的時候,可能你團隊的某個人已經先commit過後push上去了,此時可以先pull到自己的檔案後再push上去就可以解決,但如果每次都要先拉再推,會不會顯得有點麻煩?

PR = Pull Request

如果想幫忙做別人的專案時,=>fork先複製一份到自己的帳號,改好了之後,再發送pull請求給原作者,這個簡易的過程就是大家耳熟能詳的"發PR"。

“If I fail, I try again, and again, and again. If you fail, are you going to try again? The human spirit can handle much worse than we realize. It matters how you are going to finish.”

— Nick Vujicic, Motivational Speaker

本文同步發佈於: https://louiswuyj.tw/


上一篇
Day27: Rails關心你的胖Model - concern
下一篇
Day29: Rails - Active Storage
系列文
非本科之30天Ruby / Rails學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言