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 下載最新的變更,使本地和遠端的儲存庫能維持同步
- 透過這樣的工作流程,團隊成員就能共同協作來完成一個富有挑戰性的專案