2025 iThome鐵人賽
「 Flutter :30天打造念佛App,跨平台從Mobile到VR,讓極樂世界在眼前實現!」
Day 5
「 Flutter Git 實戰入門篇—穿越到Coding世界的勇者啊,你需要這套神裝(3) 」
昨天我們已經認識了「儲存庫」、「.gitignore」和「Conventional Commit」,
今天要來完成 Git 神裝的最後一個基礎元件——「雲端儲存庫」!
有了雲端儲存庫,入門版 Git 護體神裝就完整啦🎉
我們再也不怕電腦壞掉Code沒了😿,
也可以透過雲端儲存庫和其他人協作專案!
Day5 文章目錄:
一、 建立GitHub雲端儲存庫
二、 連結雲端儲存庫
三、 推送雲端儲存庫
▪︎ Public:所有人都能看見程式碼,但不代表所有人都能修改。
▪︎ Private:只有被授權的人能看見,也只有他們能修改。
就算是 public repo,陌生人也不能直接 push 改動我們的儲存庫。
他們只能 fork 一份到自己帳號,然後發 PR 過來,我們審核通過才會合併。
要進行團隊協作,我們可以在repo 設定中邀請協作者或建一個GitHub 組織。
權限 | Public | Private |
---|---|---|
誰能看 | 所有人 | 只有授權者 |
誰能改 | 受邀的協作者與團隊成員 | 受邀的協作者與團隊成員 |
陌生人 | 能看、不能直接改 | 不能看、不能改 |
Readme :專案的說明文件,包含專案用途與使用教學等。
.gitignore :排除不被版本記錄的檔案,我們已經在本地端設置好。
license:專案的授權條款,個人專案或開源套件通常會使用寬鬆的MIT License。
git push
時,可能會遇到推送被拒絕的情況。
原因是雲端比本機多出一個初始 commit(root-commit),
而本機也有自己的 root-commit,導致兩邊的 commit 歷史沒有共同祖先,
Git 無法直接快轉(fast-forward),必須額外進行合併或 rebase 才能推送成功。
To https://github.com/NamoAmitabhaTW/demo-conflict.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/NamoAmitabhaTW/demo-conflict.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
接下來我們就可以打開VScode專案的Terminal,
將本機(本地)儲存庫與雲端(遠端)儲存庫連結。
因為我們在本機Git 初始化時,我們已經將預設的初始分支命名為main,
所以這邊不用git branch -M main
更改分支名稱。
osxkeychain會把GitHub 登入憑證安全地存到 macOS 鑰匙圈
git config --global credential.helper osxkeychain
origin 是遠端儲存庫的預設名稱,可自行命名,但多數人用 origin
git remote add origin <HTTPS>
git remote --v
amitabha https://github.com/NamoAmitabhaTW/NamoAmitabha.git (fetch)
amitabha https://github.com/NamoAmitabhaTW/NamoAmitabha.git (push)
#我將雲端儲存庫命名 amitabha,所以最前面不是 origin
main分支
的commit,推送到雲端儲存庫main分支
-u
會將目前本地分支與遠端分支綁定(設定上游追蹤),
之後這個分支只要輸入git push
/git pull
就能自動推拉到對應遠端分支
git push -u origin main
git push -u origin 本地分支名:遠端分支名
git push -u origin feature/login:feature/signin
# 將本地 feature/login 分支推送到遠端 feature/signin
git branch --set-upstream-to origin/main main
重點 | 內容 |
---|---|
建立GitHub儲存庫 | 建議先不勾選「建立 README / LICENSE / .gitignore」檔案 |
連結雲端儲存庫 | git remote add origin <HTTPS> |
推送雲端儲存庫 | git push -u origin main |