Github是什麼?

Github 是以 Git 為核心技術基礎的雲端服務平台,你可以將程式碼上傳至上面,也可以在 Github 中找到開源專案,甚至將檔案下載下來學習應用。Github 可以直接使用操作頁面上傳檔案,本次學習筆記是希望結合 Git 指令,不但能將程式碼上傳,也達到版本控制的功能。

Git 與 Github 間關係

上網看到大神們分享的圖,上一篇學習筆記:Git指令操作便是在 Local(本地)端進行操作,Github 則為 Remote(遠端)環境,所以當我們在開發專案時,確認沒問題後便可將資料 push 到 Remote 環境。 但如果有其他人一起共同開發,可能會需要處理 conflict 問題。

Git 與 Github 操作

先至 Github 建立專案 Repository

git remote add (連接到你的 Github 專案)

1
$ git remote add origin "路徑位置"

git push (推送檔案上去)

1
$ git push -u origin main

-u 的意思為預設 push 的路徑,下次上傳時只要輸入 git push 就可以推到一樣的地方(例如這裡是 main)
origin意思為主機位置(可隨意更改) main 為想推到遠端的分支名稱(通常預設值為 main 或 master)

git pull (將 Gihub 上 main 中最新版本抓下來)

1
$ git pull

git 建立 Branch(分支)

接下來要介紹如何用 git 建立分支,上次提到 Git 版控是便於多人共同開發專案,因此我們會需要建立多個分支。想像成一人為一條分支處理自己的工作,每條分支會各自去修改合推送進度,到最後全部結束時在一起合併到 main 中,好處是能併行推動多個開發提高效率,且若一個分支開發失敗也不會對其他分支有影響。

git checkout -b (建立分支)

1
$ git checkout -b "分支名稱"

如果想切到指定 branch 位置則輸入 git checkout “分支名稱”即可

git merge (合併分支)

1
$ git merge "分支名稱"

剛剛介紹完 branch 的建立,而當 A 分支已經完成它的部分,且想要合併到 main 中就只要使用到 merge 指令。
通常會先 checkout 至 main 分支後,再使用 merge 指令合併預合併的分支。

conflict (衝突)問題

今天發生了一個狀況: A、B 同學都共同修改到程式碼的某一行(如下),當 A 同學先完成上傳到 mian 中,此時當 B 同學想要 push 到 main 時便會生衝突。

1
2
3
4
5
6
7
//A同學的code
def info():
print("Hello, I'm Becky")

//B同學的code
def info():
print("Hello, I'm Freen")

B 同學的衝突訊息,此時我們要使用 git pull 指令並手動更改 conflict

git pull (拉取 main 最新的資料)

1
$ git pull 

執行後如下例
可以看到藍色標記部分為最新的程式碼,而綠色是我們自己修改的,最上排有給予提示問你想要保留最新的/保留你自己的/兩者都保留,和 A 同學溝通後再重新執行一次 git add -> commit -> push 指令就可以囉!~