iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
自我挑戰組

用ChatGPT詠唱來完成工作與點亮前後端技能樹系列 第 14

【Day14】ChatGPT請教教我:GitHub!Git Flow!團隊協作!(下)

  • 分享至 

  • xImage
  •  

上一篇講了許多和Git版控相關的概念、流程、步驟

今天要來討論有關目前最知名的平台GitHub
以及問ChatGPT什麼是「Git Flow」

幾乎是每個工程師都會有一個GitHub的帳號
除了作為程式碼的託管、版控平台
還可以把自己的作品給放上去,當作履歷的一部分

因此我們先來GoGo吧

GitHub使用入門

https://ithelp.ithome.com.tw/upload/images/20230924/20135750SifECDzhVF.png

好的,下面是一個簡單的GitHub使用教學,包括創建倉庫、提交代碼、拉取和合併等基本操作。

GitHub 使用教學:

1. 創建GitHub帳戶:

首先,你需要在 GitHub 上註冊一個帳戶。這將成為你管理代碼的平台。

2. 創建新倉庫:

在登錄後,點擊右上角的加號(+)並選擇 "New repository" 來創建一個新的倉庫。

  • 填寫倉庫名稱、描述等信息。
  • 選擇公共(Public)或私人(Private)倉庫。
  • 選擇是否添加 README.md 文件(這是一個說明文件,通常用來描述項目)。
  • 點擊 "Create repository"。

3. 克隆(Clone)倉庫:

在你的電腦上打開命令行,使用以下指令克隆你剛剛創建的倉庫:

git clone <https://github.com/你的帳戶名稱/倉庫名稱.git>

4. 添加代碼:

將你的代碼(或者新建文件)添加到倉庫目錄中。

5. 提交代碼:

使用以下指令來提交代碼:

git add .  # 將所有新的、修改的和刪除的文件添加到暫存區
git commit -m "你的提交信息"  # 提交代碼並添加提交信息

6. 推送代碼:

將你的代碼推送到遠端倉庫:

git push origin main  # 如果你的主分支名稱是 main

7. 拉取變更:

如果你在其他地方進行了變更,你可以使用以下指令將這些變更拉取到你的本地倉庫:

git pull origin main  # 拉取主分支的最新變更

8. 創建分支:

你可以使用以下指令創建一個新的分支:

git branch 新分支名稱  # 創建一個名為 "新分支名稱" 的分支

9. 合併分支:

合併一個分支到當前分支:

git merge 要合併的分支名稱

10. 提交變更至新分支:

git checkout 新分支名稱  # 切換到新分支
git add .  # 添加變更到新分支
git commit -m "提交信息"  # 提交變更
git push origin 新分支名稱  # 將變更推送到新分支

這只是一個簡單的GitHub使用教學,涵蓋了基本的操作。當然,GitHub還有很多高級功能和工具,可以根據實際需要進一步學習和應用。希望這能對你有所幫助!

基本上,ChatGPT又把上一篇提到的Git版控基本操作與指令又講了一次
也確實,GitHub就是一個平台,最基本使用的方式
也就是處理Clone與推送、拉取的操作

不過如果實際開啟GitHub
會發現有一顆Code的按鈕,提供了三種Clone的方式
https://ithelp.ithome.com.tw/upload/images/20230924/20135750xebUxr1mH4.png

第一種的HTTPS就是上述ChatGPT提到的方式
網址就是放在 git clone 後方的位置

以我的某個專案
https://github.com/lalame888/itHelpDraftPublish.git 為例
就是 git clone https://github.com/lalame888/itHelpDraftPublish.git

但有第二個選項,是SSH
指令會變成這樣 git@github.com:lalame888/itHelpDraftPublish.git

第二種方式是什麼呢,我們來問問ChatGPT

SSH Clone

https://ithelp.ithome.com.tw/upload/images/20230924/20135750WIalIYNdYM.png

SSH(Secure Shell)是一種用於在互聯網上安全傳輸數據的網絡協議。它提供了一種加密的通信方式,用於在本地和遠程系統之間進行安全的數據傳輸和遠程控制。

當你在使用Git時,你可以通過兩種不同的協議來訪問和傳輸倉庫:HTTPS和SSH。

  • HTTPS Clone:這是使用HTTPS協議來訪問倉庫的方式。它需要用戶名和密碼或者是個人訪問令牌(Personal Access Token)來進行身份驗證。
  • SSH Clone:這是使用SSH協議來訪問倉庫的方式。它使用SSH金鑰對進行身份驗證,而不需要輸入用戶名和密碼。

使用SSH Clone的主要好處是:

  1. 安全性:SSH提供了一種加密的通信方式,可以保護你的數據在傳輸過程中不被窺視或篡改。
  2. 無需反覆輸入密碼:當你設置了SSH金鑰之後,你可以通過金鑰進行身份驗證,而無需每次輸入用戶名和密碼。
  3. 方便性:一旦設置了SSH金鑰,你可以輕鬆地進行倉庫的克隆、推送等操作,而不需要反覆輸入密碼。

如果你選擇使用SSH Clone,你需要先在你的系統中生成SSH金鑰對,然後將公鑰添加到你的GitHub帳戶中。這樣,當你使用SSH Clone時,GitHub就能夠識別你的身份。

總的來說,SSH Clone提供了一種更加安全和方便的方式來訪問和管理你的倉庫。

這樣看起來,使用SSH Clone既安全又方便
但對於要怎麼開始使用SSH Clone的步驟,ChatGPT在上述的介紹中
相當輕描淡寫的帶過

我們來追問如何進行他所說的生成SSH金鑰以及設定
https://ithelp.ithome.com.tw/upload/images/20230924/20135750K0Ylv9cmBZ.png

生成SSH金鑰對並將公鑰添加到GitHub帳戶是一個重要的步驟,它允許你使用SSH協議進行倉庫的訪問和操作。以下是詳細的步驟:

生成SSH金鑰對:

  1. 打開終端(如果你使用的是Windows,請使用Git Bash或其他類似的工具)。

  2. 在終端中,輸入以下命令以生成SSH金鑰對:

    ssh-keygen -t ed25519 -C "你的電子郵件地址"
    
    • t 選項指定了要使用的金鑰類型,這裡我們使用的是 ed25519,這是一種安全性較高的加密算法。
    • C 選項用於提供一個注釋,通常建議使用你的電子郵件地址。
  3. 系統將提示你選擇金鑰文件的存儲位置,默認情況下,它將存儲在你的用戶主目錄下的 .ssh 文件夾中。你可以按Enter接受默認值。

  4. 系統還將要求你設置一個密碼以保護你的私鑰。這個密碼是可選的,你可以選擇留空,但建議設置一個強密碼以增強安全性。

  5. 一旦生成了SSH金鑰對,你會在指定的存儲位置找到兩個文件:

    • id_ed25519(私鑰,請儲存在安全的地方,不要分享或丟失)。
    • id_ed25519.pub(公鑰,用於添加到GitHub帳戶)。

將公鑰添加到GitHub帳戶:

  1. 登錄到你的GitHub帳戶。
  2. 點擊右上角的頭像,選擇 "Settings"。
  3. 在左側的選單中,選擇 "SSH and GPG keys"。
  4. 點擊 "New SSH key"。
  5. 在 "Title" 字段中,為你的金鑰提供一個描述性的名稱。
  6. 在 "Key" 字段中,打開你的 id_ed25519.pub 文件,並複製其中的內容。然後將該內容粘貼到GitHub的 "Key" 字段中。
  7. 點擊 "Add SSH key"。
  8. GitHub 將要求你輸入你的帳戶密碼以確認添加SSH金鑰。

一旦完成這些步驟,你的SSH公鑰將與GitHub帳戶關聯。現在,你可以使用SSH Clone來訪問和操作GitHub倉庫,而無需每次輸入用戶名和密碼,並且能夠更安全地訪問你的倉庫。

請注意,私鑰(id_ed25519)非常重要,請確保妥善保存它,不要分享給他人。這將幫助確保你的SSH連接的安全性。

進階GitHub功能

除了基本的Git操作之外,GitHub還有整合很多功能
接下來請ChatGPT幫我們介紹
https://ithelp.ithome.com.tw/upload/images/20230924/20135750RhLgEl54AF.png

GitHub是一個強大的開發者平台,除了基本的代碼存儲和版本控制功能外,它還提供了許多其他功能和工具,用於協作、項目管理和自動化。以下是一些GitHub的其他重要功能:

  1. Issue 跟蹤:你可以使用Issues來跟蹤和管理項目中的問題、建議和任務。它允許團隊成員報告問題,並進行討論、分配和追蹤問題的狀態。
  2. Pull Requests:用於將分支的變更合併回主分支。Pull Request(PR)是一個用於討論和審查代碼變更的平台,它允許團隊進行代碼審查,提供意見反饋,最終將變更合併到主分支中。
  3. GitHub Actions:自動化工作流程和CI/CD(持續集成/持續交付)。你可以設置GitHub Actions來自動化測試、構建和部署你的應用程式。
  4. GitHub Pages:用於主機靜態網站的免費托管服務。你可以將你的項目文檔或網站部署到GitHub Pages上,使其在互聯網上可訪問。
  5. GitHub Discussions:用於在項目中進行討論和社群互動的工具。它可以用於討論項目的各個方面,提出問題,分享見解,建立社區。
  6. GitHub Wiki:用於編寫和共享項目文檔的工具。你可以創建Wiki頁面,記錄項目的使用指南、文檔和相關信息。
  7. GitHub Templates:提供了各種項目模板,包括Issue模板和Pull Request模板,以幫助項目管理和協作的統一性。
  8. GitHub Security:提供安全漏洞通知、代碼掃描、依賴項安全性分析等安全性相關功能,幫助保護你的代碼庫免受潛在風險。
  9. GitHub Codespaces:允許在網頁瀏覽器中運行開發環境,以便更輕鬆地開發和測試代碼。
  10. GitHub Discussions:這是一個新的功能,用於在項目中進行討論和社區互動,讓使用者可以更輕鬆地與項目的貢獻者和使用者互動。

GitHub的功能非常豐富,可以滿足各種開發需求,並提供了一個全面的協作和項目管理平台。開發者和團隊可以根據自己的需求充分利用這些功能來提高效率並更好地管理項目。

林林總總的功能ChatGPT都為我們簡介了一輪
我們追問有關Pull Request的部分

Pull Request (PR)

https://ithelp.ithome.com.tw/upload/images/20230924/20135750NqZkYq7nvE.png

Pull Request(PR)是GitHub平台上的一個重要功能,它允許開發者在進行代碼變更時向項目的主分支提交自己的變更,並提出讓其他成員進行討論、檢閱和合併的請求。以下是詳細的介紹:

1. 創建Pull Request

當你在你的倉庫中的分支上進行了一些變更並希望將這些變更合併到主分支時,你可以創建一個Pull Request。

  1. 在GitHub網站上,轉到你的倉庫。
  2. 點擊 "Pull requests" 選項卡。
  3. 點擊 "New pull request" 按鈕。
  4. 在 "base" 選擇框中選擇目標分支(通常是主分支),在 "compare" 選擇框中選擇你的變更所在的分支。
  5. GitHub會顯示這兩個分支之間的比較,你可以查看變更的內容。
  6. 點擊 "Create pull request"。

2. 審查和討論

一旦你創建了Pull Request,其他團隊成員可以查看你的變更並在評論中提供反饋。

  • Reviewers:你可以指定某些成員為審查者,他們將負責審查你的代碼。
  • Comments:審查者可以在Pull Request中發表評論,提供意見、建議或者發現的問題。

3. 持續更新

在Pull Request被合併之前,你可以繼續在你的分支中進行變更,並將這些變更添加到Pull Request中。

  • 使用 git push 將新的變更推送到你的分支。

4. 合併Pull Request

當Pull Request中的變更經過審查且被確認為沒有問題時,它可以被合併到目標分支中。

  • 點擊 "Merge pull request" 按鈕以將變更合併。

5. 刪除分支

一旦Pull Request被合併,你可以選擇刪除你的分支以保持代碼的整潔。

6. 關聯Issues

你可以在Pull Request中關聯相應的Issue,這樣就能夠方便地追蹤和處理相關的問題。

7. 自動化操作

你可以使用GitHub Actions等自動化工具來設置CI/CD流程,使得當Pull Request被創建或更新時,可以自動運行測試、構建等操作。

總的來說,Pull Request是一個重要的協作工具,它使得團隊能夠就代碼變更進行討論、審查,保證了代碼的質量並促進了項目的發展。這也是開源社區中常用的一種合作方式。

綜合以上,Pull Request是一個可用於團隊中進行Code Review、審查改動或寫法是否沒問題才讓分支的程式碼合併進主分支的功能
在團隊協作中,可以多多利用PR的機制,維護團隊的程式碼品質

Git Flow

最後,來探討什麼是Git Flow
上一篇就有提到,如果去看一些公司的應徵條件
「熟悉Git Flow」這樣的要求還算是常見

git flow到底是什麼呢?來詢問ChatGPT吧
https://ithelp.ithome.com.tw/upload/images/20230924/20135750WSQBLaLmPI.png

Git Flow 是一種源代碼管理模型,它提供了一套明確的規則和指南,用於管理Git倉庫中的分支,以便在團隊開發過程中更有效地進行協作和版本控制。

這種模型是由Vincent Driessen在他的網誌中提出的,它將Git的分支策略進行了擴展,以滿足複雜的開發流程需求。

Git Flow 的主要分支:

  1. 主分支 (master):
    • 這是項目的主要分支,包含了所有已經穩定且可發佈的代碼。任何進入到這個分支的變更都應該是經過測試和驗證的。
  2. 開發分支 (develop):
    • 這是用於整合不同開發者或團隊成員的工作的分支。開發者會將自己的特性分支合併到這個分支,以進行整體的開發。

Git Flow 的輔助分支:

  1. 特性分支 (feature branches):
    • 這是用於開發新功能或進行修改的分支。它們通常是基於 develop 分支創建的,並在完成後再合併回 develop
  2. 發佈分支 (release branches):
    • 這是用於準備發佈新版本的分支。在這個分支上進行最後的測試、版本號更新等操作,然後將其合併回 master 分支和 develop 分支。
  3. 修補分支 (hotfix branches):
    • 在發佈後,如果需要立即修復錯誤或問題,可以基於 master 分支創建一個修補分支。完成修補後,將其合併回 master 分支和 develop 分支。

Git Flow 的操作流程:

  1. 初始化項目:創建一個新的Git倉庫,開發者開始在 develop 分支上進行開發。
  2. 創建特性分支:每個新特性或修改都應該在獨立的特性分支上進行開發。
  3. 合併特性分支:當特性開發完成後,將其合併回 develop 分支。
  4. 準備發佈:當開發到一個階段需要進行發佈時,創建一個新的發佈分支進行相應的準備工作。
  5. 進行發佈:在發佈分支上進行最後的測試、版本號更新等操作。
  6. 合併發佈分支:將發佈分支合併回 master 分支,並同步到 develop 分支。
  7. 修補:如果在發佈後發現了錯誤,可以創建一個修補分支進行修補。
  8. 合併修補分支:將修補分支合併回 master 分支,並同步到 develop 分支。

優點:

  • 提供了清晰的分支策略,使得團隊成員更容易理解和遵循開發流程。
  • 有效地區分了功能開發、發佈準備和修補等不同階段,使得整個開發過程更有秩序。
  • 有助於保證 master 分支的穩定性,並確保任何進入該分支的變更都是經過測試和驗證的。

注意事項:

  • Git Flow 可以根據項目的具體需求進行調整和定制。
  • 需要注意合併的操作,以避免衝突和不必要的困難。

總的來說,Git Flow 是一種有效的源代碼管理模型,特別適用於大型或長期項目的開發,它提供了清晰的指南和分支策略,使得團隊能夠更有效地進行協作和版本控制。

所以,Git Flow 是一種「管理模型」、「提供了一套明確的規則和指南」
也就說他是一個建議開發者「要這樣做會比較好」的規則或流程

也可以說是一種原則,接下來我們來探討他的規則和目的
https://ithelp.ithome.com.tw/upload/images/20230924/20135750z8zdTdvhP2.png

Git Flow 的原則和規則是一套基於分支管理的開發模型,它強調了清晰的分支策略,使得團隊在開發過程中能夠更有效地協作和控制版本。以下是 Git Flow 的主要原則和規則:

  1. 主分支保持穩定
    • master 分支始終應該保持穩定和可發佈的狀態。任何進入到 master 分支的變更都應該是經過測試和驗證的。
  2. 開發者在 develop 分支上進行開發
    • 開發者應該在 develop 分支上進行開發,這是整合不同開發者或團隊成員的工作的主要分支。
  3. 特性開發在獨立的分支上進行
    • 每個新特性或修改都應該在獨立的特性分支上進行開發,以保證清晰的變更歷史。
  4. 發佈準備在發佈分支上進行
    • 當開發到一個階段需要進行發佈時,應該創建一個新的發佈分支,並在該分支上進行相應的準備工作。
  5. 修補在修補分支上進行
    • 如果在發佈後發現了錯誤,可以創建一個修補分支進行修補。
  6. Pull Request 和審查
    • 在所有分支合併之前,應該通過Pull Request進行代碼審查,以確保代碼的質量。
  7. 保持分支整潔
    • 不需要的分支應該被及時刪除,以保持倉庫的整潔。
  8. 持續集成和自動化
    • 建議使用持續集成(CI)和自動化工具來測試和驗證代碼的變更。
  9. 版本號管理
    • 在發佈時應該更新版本號,以便清晰地識別不同版本之間的差異。
  10. 團隊成員需熟悉Git Flow
    • 所有團隊成員都應該熟悉並遵循Git Flow的原則和規則,以保證協作的順利進行。

這些原則和規則提供了一套清晰的指南,使得團隊在開發過程中能夠更有效地協作和控制版本。同時,Git Flow 也可以根據項目的具體需求進行調整和定制。

結語

連同上一篇,與ChatGPT的對話記錄在這裡:
https://chat.openai.com/share/ca9f6bdc-8b16-412b-b33e-27dc9d95251a

這個章節主要是GitHub的操作使用,以及與團隊協作相關會用到的功能
有關Git系列就先到這裡告一段落

下一篇!要繼續前端領域: 讓ChatGPT來帶領React入門

我是學會PR協作的前端工程師一宵三筵,我們明天見!


上一篇
【Day13】ChatGPT請教教我:Git版控!(上)
下一篇
【Day15】ChatGPT請教教我:React入門(一)- 起始安裝、JSX元素、元件!
系列文
用ChatGPT詠唱來完成工作與點亮前後端技能樹56
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言