wordpress_blog

This is a dynamic to static website.

Git 和 GitHub 零基礎快速上手

Learning From Youtube Channel: PAPAYA 電腦教室
Video: 程式與網頁開發者必備技能! Git 和 GitHub 零基礎快速上手,輕鬆掌握版本控制的要訣!
Thank you.

00:00 – 開場白 & Git 安裝
02:03 – Git 基本設定與初始化
03:36 – Git 檔案狀態
06:46 – 檢視提交紀錄與檔案還原
10:06 – 忽略檔案清單
10:34 – GitHub 註冊 & 同步儲存庫
12:11 – 加入協作者至專案
13:36 – 建立分支
14:35 – 發起合併請求 & 合併分支

開場白 & Git 安裝

  • Git 是協助檔案管理版本工具
  • 安裝 VSCode 免費軟體
  • 建立 My Project 資料夾
  • 安裝 Git
  • 打開終端機查詢版本,git –version

Git 基本設定與初始化

  • 設定姓名和電子郵件地址
    git config –global user.name “geehsu”
    git config –global user.email “geehsu@gmaill.com”
  • Git 初始化,git init
  • 清除終端機畫面,clear
  • 建立 Price.md 檔案
  • 建立 Specs.md 檔案
  • 建立 Systems.md 檔案
// Price.md
# 價格分析
價格分析是一種經濟學和市場分析的方法,用來研究產品或服務的價格如何影響消費者行為和市場動態。這類分析通常涉及以下幾個方面:

需求與供應: 分析價格如何影響產品或服務的需求和供應量。通常來說,價格上升可能會減少需求,但同時也可能刺激供應。

市場結構: 調查市場的競爭程度,包括壟斷、寡頭壟斷、完全競爭等形式。這會影響價格的設定方式和市場參與者的行為。

價格彈性: 衡量價格變動對需求量變動的敏感程度。價格彈性高意味著小幅價格變動可能會對需求產生顯著影響,而價格彈性低則相反。

競爭策略: 分析企業如何透過價格來制定競爭策略,例如價格領導、價格競爭、價格歧視等,以達到市場份額和利潤最大化的目標。

消費者行為: 研究價格如何影響消費者的購買決策和行為模式,包括價格感知、價格預期和購買意願等。

總結來說,價格分析不僅限於價格水平本身,還涉及價格與市場環境、消費者行為和企業策略之間的複雜互動。這些分析能夠幫助企業和政策制定者更好地理解市場運作,並做出相應的策略和政策決策。
// Specs.md
# 技術規格
技術分析是一種用來預測金融市場走勢的方法,主要基於過去市場行為的統計數據和圖表模式來做出預測。這種分析方法主要包括以下幾個要素:

圖表模式分析: 技術分析師會觀察股票或其他金融資產的歷史價格走勢,並尋找特定的圖表模式,如頭肩頂、雙底形態、三角形等。這些模式被認為能夠預示未來的價格走勢。

技術指標: 技術分析使用各種技術指標來量化市場的價格和成交量數據,並從中提取有用的信號。常見的技術指標包括移動平均線、相對強弱指標(RSI)、MACD(移動平均匯聚/分歧指標)等。

市場心理學: 技術分析也關注市場參與者的情緒和心理狀態對市場的影響。例如,過度買入或過度賣出情況可能會影響市場走勢。

支撐與阻力: 技術分析師會觀察市場中的支撐位(價格下跌後停止下跌的水平)和阻力位(價格上漲後停止上漲的水平),這些水平通常被認為具有重要的價格反彈或反轉信號。

技術分析的目標是通過以上方法來預測市場走勢,進而制定交易策略或投資決策。然而,技術分析也有其局限性,例如忽略基本面因素、過度依賴歷史模式等,因此通常會與基本面分析結合使用,以獲得更全面的市場洞察。
// Systems.md
# 軟體兼容性
軟體兼容性是指一個軟體應用程式或系統能夠在不同的硬體平台、作業系統或環境下正常運行和互動的能力。這在現代軟體開發中至關重要,特別是考慮到各種不同的使用情境和技術設定。

主要考慮因素:
硬體平台: 軟體必須能夠在不同的硬體設備上運行,包括桌面電腦、筆記型電腦、平板電腦、智能手機等。這些設備可能擁有不同的處理器架構、記憶體容量和圖形處理能力,軟體需要能夠有效利用這些硬體資源。

作業系統: 軟體必須與目標使用的作業系統兼容,如Windows、macOS、Linux、Android、iOS等。不同的作業系統可能有不同的應用程式介面(API)和系統限制,軟體需要根據這些特性進行開發和測試。

依賴的庫和框架: 許多軟體開發依賴於第三方庫和框架,這些庫和框架也需要與目標平台和環境兼容。開發者需要確保這些依賴項目的版本和更新與目標系統相容。

網路環境: 如果軟體需要在網際網路環境下運行,則需要考慮不同的網路設定和帶寬要求,以確保軟體在不同的網路速度和穩定性條件下仍能正常運作。

語言和協議: 如果軟體與其他系統或服務進行通訊,需要確保使用的通訊語言和協議在不同系統之間的相容性,如HTTP、REST API、SOAP等。

管理軟體兼容性的方法:
測試和驗證: 在開發過程中,進行系統化的測試,包括單元測試、整合測試和系統測試,以確保軟體在各種情況下的正常運行。

版本控制: 管理和追蹤依賴項目的版本,確保軟體與其依賴的庫和框架相容。

文檔和支援: 提供清晰的文檔和支援資源,幫助用戶在不同環境中安裝、配置和使用軟體。

總結來說,有效的軟體兼容性管理是軟體開發過程中的重要一環,它能夠確保軟體在不同平台和環境中的穩定性和功能性,提升用戶的滿意度和整體產品的可靠性。

Git 檔案狀態

  • 檢查當前目錄中每個檔案的狀態,git status
  • 檔案狀態:
    Untracked 未追蹤
    Tracked 已追蹤
    Staged 已暫存
    Committed 已提交
  • 將檔案狀態未追蹤轉換成已追蹤
    加到暫存區
    git add Price.md
  • 檢查檔案狀態,git status
  • 把其他兩個檔案也從未追蹤轉換成已追蹤
    加到暫存區
    git add Specs.md
    git add Systems.md
  • 檢查檔案狀態,git status
  • 提交叫做 git commit
    git commit -m “建立還原點”
  • 檢查檔案狀態,git status
  • 修改檔案內容
  • 再次加到暫存區
    git add *.md
    將所有變更都加入到暫存區,git add .
  • 提交 git commit
    git commit -m “加上新的內容”
  • 修改檔案內容
  • 再次加到暫存區
    git add .
  • 提交 git commit
    git commit -m “修改加上新的內容”
// Price.md
# 價格分析
價格分析是一種經濟學和市場分析的方法,用來研究產品或服務的價格如何影響消費者行為和市場動態。這類分析通常涉及以下幾個方面:

需求與供應: 分析價格如何影響產品或服務的需求和供應量。通常來說,價格上升可能會減少需求,但同時也可能刺激供應。

市場結構: 調查市場的競爭程度,包括壟斷、寡頭壟斷、完全競爭等形式。這會影響價格的設定方式和市場參與者的行為。

價格彈性: 衡量價格變動對需求量變動的敏感程度。價格彈性高意味著小幅價格變動可能會對需求產生顯著影響,而價格彈性低則相反。

競爭策略: 分析企業如何透過價格來制定競爭策略,例如價格領導、價格競爭、價格歧視等,以達到市場份額和利潤最大化的目標。

消費者行為: 研究價格如何影響消費者的購買決策和行為模式,包括價格感知、價格預期和購買意願等。

總結來說,價格分析不僅限於價格水平本身,還涉及價格與市場環境、消費者行為和企業策略之間的複雜互動。這些分析能夠幫助企業和政策制定者更好地理解市場運作,並做出相應的策略和政策決策。

謝謝你,ChatGPT
// Specs.md
# 技術規格
技術分析是一種用來預測金融市場走勢的方法,主要基於過去市場行為的統計數據和圖表模式來做出預測。這種分析方法主要包括以下幾個要素:

圖表模式分析: 技術分析師會觀察股票或其他金融資產的歷史價格走勢,並尋找特定的圖表模式,如頭肩頂、雙底形態、三角形等。這些模式被認為能夠預示未來的價格走勢。

技術指標: 技術分析使用各種技術指標來量化市場的價格和成交量數據,並從中提取有用的信號。常見的技術指標包括移動平均線、相對強弱指標(RSI)、MACD(移動平均匯聚/分歧指標)等。

市場心理學: 技術分析也關注市場參與者的情緒和心理狀態對市場的影響。例如,過度買入或過度賣出情況可能會影響市場走勢。

支撐與阻力: 技術分析師會觀察市場中的支撐位(價格下跌後停止下跌的水平)和阻力位(價格上漲後停止上漲的水平),這些水平通常被認為具有重要的價格反彈或反轉信號。

技術分析的目標是通過以上方法來預測市場走勢,進而制定交易策略或投資決策。然而,技術分析也有其局限性,例如忽略基本面因素、過度依賴歷史模式等,因此通常會與基本面分析結合使用,以獲得更全面的市場洞察。

謝謝你,ChatGPT
// Systems.md
# 軟體兼容性
軟體兼容性是指一個軟體應用程式或系統能夠在不同的硬體平台、作業系統或環境下正常運行和互動的能力。這在現代軟體開發中至關重要,特別是考慮到各種不同的使用情境和技術設定。

主要考慮因素:
硬體平台: 軟體必須能夠在不同的硬體設備上運行,包括桌面電腦、筆記型電腦、平板電腦、智能手機等。這些設備可能擁有不同的處理器架構、記憶體容量和圖形處理能力,軟體需要能夠有效利用這些硬體資源。

作業系統: 軟體必須與目標使用的作業系統兼容,如Windows、macOS、Linux、Android、iOS等。不同的作業系統可能有不同的應用程式介面(API)和系統限制,軟體需要根據這些特性進行開發和測試。

依賴的庫和框架: 許多軟體開發依賴於第三方庫和框架,這些庫和框架也需要與目標平台和環境兼容。開發者需要確保這些依賴項目的版本和更新與目標系統相容。

網路環境: 如果軟體需要在網際網路環境下運行,則需要考慮不同的網路設定和帶寬要求,以確保軟體在不同的網路速度和穩定性條件下仍能正常運作。

語言和協議: 如果軟體與其他系統或服務進行通訊,需要確保使用的通訊語言和協議在不同系統之間的相容性,如HTTP、REST API、SOAP等。

管理軟體兼容性的方法:
測試和驗證: 在開發過程中,進行系統化的測試,包括單元測試、整合測試和系統測試,以確保軟體在各種情況下的正常運行。

版本控制: 管理和追蹤依賴項目的版本,確保軟體與其依賴的庫和框架相容。

文檔和支援: 提供清晰的文檔和支援資源,幫助用戶在不同環境中安裝、配置和使用軟體。

總結來說,有效的軟體兼容性管理是軟體開發過程中的重要一環,它能夠確保軟體在不同平台和環境中的穩定性和功能性,提升用戶的滿意度和整體產品的可靠性。

謝謝你,ChatGPT

檢視提交紀錄與檔案還原

  • 使用終端機輸入指令,git log
    會列出先前的提交歷史
  • 按下 q 就可以退出 log 的檢視模式
  • git log 指令的簡化版,git log –oneline
    適合快速瀏覽過去的提交紀錄
  • HEAD、master 的說明
    master 想成是遊戲中的主線劇情
    HEAD 則是指向遊戲目前的進度,通常為遊戲最新的存檔點
  • 將文件恢復成較早的狀態
    還原前先比較新、舊版本的內容差異,git diff
    git diff f6d9011 — Price.md
  • 將檔案還原到這個版本,git checkout f6d9011 — Price.md
  • 注意這個變動同樣需要進行提交
    git commit -m “改為還原點內容”
  • 檢視提交紀錄,使用 git log –oneline
    基本上完整保留先前的歷史紀錄
  • 有時也許想將全部檔案還原到某個時間點,並且捨棄掉之後的存檔紀錄,git reset –hard 08440ab
    注意這個操作是不可逆的,有需要先做備份
  • 建立 Marketing.md 檔案
  • 修改 Marketing.md 檔案
  • 同樣用 git add 將檔案加入到暫存區
  • 同樣用 git commit 將檔案提交
  • 刪除 Marketing.md 檔案
  • 檢查當前目錄的狀態,git status
  • 再次用 git add 加入到暫存區
  • 檢查當前目錄的狀態,git status
  • 觀念: Git 追蹤的是檔案的變化,而非檔案本身
  • 再次用 git commit 將檔案提交
  • 檢查當前目錄的狀態,git status
  • 檢視提交紀錄(簡化版),git log –oneline

忽略檔案清單

  • 建立 .gitignore 檔案
  • 修改 .gitignore 檔案
    把要忽略的檔名或副檔案寫在裡面
    git 在提交時就能避免無關的檔案混入到版本紀錄,保持專案整潔,同時避免私人資料不小心被提交到 Git 儲存庫
// .gitignore
*.jpg

GitHub 註冊 & 同步儲存庫

  • git 版本控制系統
    GitHub 雲端協作平台
  • 在 GitHub 官網註冊免費帳號
  • 在主頁面建立儲存庫
  • Respository name
    Description
    Public、Private
    Create
  • GitHub 有提供現成的指令協作把本地的檔案推送到雲端
  • 第一行是用來連結本地和遠端的儲存庫
    git remote add origin https://github.com/papayaclass/VRFusion.git
    remote: 遠端
    add: 新增
    origin: 遠端儲存庫名稱
    https://github.com/papayaclass/VRFusion.git: 遠端儲存庫網址
  • 第二行是把原來的主線分支從 master 改為較中性的詞語 main
    git branch -M main
    branch: 分支管理
    -M: 重新命名
    main: 新的分支名
  • 第三行則是把本地位於 main 分支的資料推送到雲端
    git push -u origin main
    push: 推送
    -u: 建立關聯
    origin: 遠端名稱
    main: 本地名稱
  • 在 GitHub 打開 Code 頁面就能看到所有已上船的檔案
    在 Commits 頁面看到所有提交的版本紀錄
  • 增加 README.md 檔案
  • git add 檔案加到暫存區
  • git commit 檔案提交
  • git push 檔案推送

加入協作者至專案

  • 打開 Collaborators (合作者) 的頁面
  • 點擊新增成員,輸入帳號名稱或電子郵件
  • 成為協作者的人,首先要將儲存庫複製到本地端電腦
    git clone 儲存庫網址
  • 打開並移動到該專案
  • 本人修改專案內容後做推送
  • 協作者此時只要輸入 git pull 指令就能將最新雲端版本紀錄拉回到本地端,團隊成員以維持在同步的狀態

建立分支

  • 以遊戲儲存進度做舉例
    要求對方儲存自己的遊戲進度
    git checkout -b branch2
    checkout: 切換分支
    -b: 建立並切換至新分支
    branch2: 新分支名稱
  • 協作者在自己本地端修改文件
    同樣可以加到暫存區、提交、推送
    git push origin branch2
    push: 推送
    origin: 遠端名稱
    branch2: 本地名稱

發起合併請求 & 合併分支

  • 回到 GitHub 的專案頁面會發現分支數量已變成兩個
  • 協作者可以發起 Pull Request (合併請求),讓團隊的其他成員知道他已完成了一項編輯或修復了一個問題,並請求將這些變更合併到主線分支
  • 在自己的帳號中也能看到協作者發起的 Pull Request,我們可以把這個項目打開來檢視協作者在他的分支內做了哪些編輯,審核的過程中如果發現一些需要改進的地方,可以在評論區內寫下我們的建議
  • 或是從右下角的選單中選擇 Request Change 正式請求協作者進行相應的修改
  • 如果在審核時覺得協作者所做的變更沒有問題,我們就可以回到原頁面點擊 Merge Pull Request 的按鈕,把協作者在他的分支所做的變更合併到主線分支,合併完成後協作者的分支就完成了他的任務,我們就可以放心地把新分支刪除掉
  • 至於我們在本地端的檔案則記得要執行 git pull 的指令從 GitHub 下載最新的變更,使本地和遠端的儲存庫能維持同步
  • 透過這樣的工作流程,團隊成員就能共同協作來完成一個富有挑戰性的專案