跳至主要内容

如何貢獻 Git 平台上的專案 ── Git 平台入門協作教學

· 閱讀時間約 8 分鐘
美味的小圓 Kay Xue

如何貢獻 Git 平台上的專案

想必有在寫程式、使用 Git 平台的程式開發者,有時會想幫一些開發者修改專案的程式碼,讓整個程式運行更流暢或者減少開發者的負擔吧?在這裡就教大家如何貢獻一個 Git 平台上的專案,讓您也可以為程式的生態盡一份心力!

此文章主要聚焦於如何貢獻,現今在網路上很多 Git 平台,在此會多以 GitHub 及 GitLab 介面講解。

步驟一:Fork 專案

因為那個專案不是你的,所以您對該專案只能複製,並不能做其他修改。所以我們必須先 Fork,讓 Git 平台複製一份該專案的副本給我們,我們才能開始修改程式碼,並將修改推送至專案副本。
首先到您想要貢獻的專案,點選 Fork 按鈕:

Fork 按鈕

Repository name 預設會是該專案的名字,然後點選 Create Fork 創建:

寫入 Fork 資訊

窩只是一個普通的廣告 點進去了解一下讓我們的機器龍活得更久

GitLab 的 Fork 部分其實跟 GitHub 大同小異,多了能決定專案是否此副本能被別人看到的 Visibility Level 選項。

小提示

Project Url 欄位後面設定的是這個副本的擁有者是誰

寫入 Fork 資訊

複製完成後,他會幫你跳轉至您的副本專案網頁,至此您就完成了 Fork 專案,並且您會在專案標題下方看到 Fork from foo/bar

成功 Fork

成功 Fork

步驟二:Clone 專案副本、環境設定與開始編輯

首先我們到 GitHub 複製專案連結,點選 Code 按鈕 HTTPS 來複製連結,

Code 按鈕c

接下來我們開啟終端機,透過以下指令將專案副本複製到電腦上您想要的位置,

git clone https://github.com/擁有者/專案名字
窩只是一個普通的廣告 點進去了解一下讓我們的機器龍活得更久

Clone 專案

然後專案就會被複製到電腦上您指定的位置了,但是請先別急,請先透過以下指令添加一個原本專案的 git 數據庫(在此我命名該數據庫為 upstream):

git remote add upstream 原本專案的連結

新增 Upstream

GitHub Flow、GitLab Flow 建議我們在多人實作時建立分支,目的在能夠安全實驗程式碼與執行變更,接下來,輸入以下指令建立新分支並切換過去:

git checkout -b 分支名稱

切換至新分支

然後就可以開始編輯了!

開始編輯

當您每編輯到了一個階段後,您可以在該資料夾下開啟終端機,並 適當 使用下方指令進行將新增檔案至索引、儲存變更、提交推送變更至 Git 平台上的副本專案等動作:

git add . # 將所有檔案新增至索引,如果沒有新檔案可以不用輸入這行git commit -am "更新內容" # 提交變更git push -u origin 剛剛建立的新分支名稱 # 推送變更至Git平台的副本專案
窩只是一個普通的廣告 點進去了解一下讓我們的機器龍活得更久

追蹤並提交

步驟三:向原專案發出推送要求

請先前往 Git 平台上專案副本網頁,點選 Contribute -> Open Pull Request

開啟 Pull Request

小筆記
  • GitHub 到專案頁面,如果有出現 XXX had recent pushes... 也可以按下該黃色橫幅右側的 Compare & pull request

    Compare & pull request

  • GitLab 到專案頁面,在專案副本網頁上方會出現一則寫著 You pushed to... 的訊息,請點選下方的 Create Merge Request 按鈕:

    Create Merge Request

接下來就會出現填寫 Pull Request 資訊的介面,填好相關資訊以後請按下 Create Pull Request 按鈕正式向原專案發出推送要求。

寫入 Pull Request 資訊

創建完成之後將會透過 Email 通知該 Pull Request 的各種更新動態, 等待合併

等待結果!

當有人對您發出的 Pull Request 做出回應時,您會收到相關通知:

窩只是一個普通的廣告 點進去了解一下讓我們的機器龍活得更久

Pull Request 通知

警告

如果是 GitLab 則不會通知!請自己定時前往確認您發出的推送請求之目前處理進度!

點進去即可查看目前該 Pull Request 的相關消息,如果您有看到 Pull Request 標題下方有 Merged 字眼,恭喜您,您的推送請求已經被開發者批准了!您可以按下下方的 Delete branch 刪除分支!

成功合併

繼續貢獻

當然您可以選擇繼續貢獻,但在繼續貢獻之前,請檢查是否原專案的主分支有被變更過,如果有,請先輸入以下指令以拉取原專案有被做過的變更:

git pull upstream master
我想先告知你

若您是 GitLab,主分支通常會是 main 而不是 master!不過可能依照每個專案會有不同的設定。

然後您就可以繼續編輯等作業了

常見問題

無法使用 git commit

Please tell me who you are

這通常會發生在您第一次使用 Git CLI 進行專案管理的時候,因為他沒有您的資訊,所以 git commit 指令無法執行,請跟著他的指令提示填入您的相關資訊後,再輸入一次 git commit 即可正常提交。

窩只是一個普通的廣告 點進去了解一下讓我們的機器龍活得更久

Please tell me who you are

Nothing to commit, working tree clean

這代表您沒有對檔案做出變更,或是沒有使用 git add 指令先將檔案加入到 Git 索引內。

Nothing to commit, working tree clean

無法使用 git push

Everything up-to-date

這跟剛剛 Nothing to commit, working tree clean 差不多,您沒有檔案的修改需要被推送上 Git 平台。

Everything up-to-date

Support for password authentication was removed...

通常此問題會發生在 Linux 或者一些要在終端機中輸入使用者帳號、密碼以登入的終端機上。因為 密碼驗證 GitHub 已經在 2021 年 8 月 13 日時被禁止了,所以登入時,Username 欄位一樣輸入使用者名字,Password 請輸入您帳戶的 Personal Access Token (PAT)。如果不知道如何生成自己帳戶的 Personal Access Token,請參考 Creating a personal access token

Support for password authentication was removed...

窩只是一個普通的廣告 點進去了解一下讓我們的機器龍活得更久