方格精選

Git 與 Github 是什麼?如何使用 Git?

更新於 2024/11/30閱讀時間約 7 分鐘
搞清楚 Git 與 GitHub 的差別並學會必會操作

什麼是 Git?

Git 是一個軟體,可藉由它產生一個數據庫(repository),並且做到分散式版本控制。由於可在多處放置同一份程式碼、歷史紀錄追蹤與回朔,讓協同開發變得容易。(關於不同版本控制系統的介紹,請參閱 Git 官方教學文件

什麼是 GitHub?

Github 是一個遠端數據庫,其他還有 Bitbucket 和 Gitlab。
優勢比較:
  • GitHub:擁有 GitHub Pages 功能,可擁有私人數據庫,免費方案是 3 人以下
  • Bitbucket:可擁有私人數據庫,免費方案是五人以下團隊
  • GitLab:自架 Git 伺服器,有提供 web 視覺化管理介面,常用於企業內部開發

基本終端機指令
– 前往資料夾:cd <路徑>
– 到目前資料夾上一層:cd ..
– 到目前資料夾最外層:cd ~
– 查看當前位置:pwd
– 查看當前資料夾內檔案:ls(cd + 空白鍵 + tab鍵)
– 創建資料夾(工作目錄):mkdir <demo>
– 新增檔案:touch <index.html>
– 刪除檔案:rm <index.html>
– 複製檔案:cp <index.html>
– 移動檔案:mv <index.html>
– 清除終端機畫面:clear
git 設定
– 查看 git 版本:git — version
– 輸入姓名:git config — global user.name “Ray”
– 輸入個人的 email:git config — global user.email “ray@gmail.com”
– 查詢使用者名稱:git config user.name
– 查詢使用者信箱:git config user.email
– 查詢 git 設定內容:git config — list
git 版本控制基本架構(來源
git 初始化與提交
– 初始化數據庫:git init
– 查看 git 狀態:git status
– 將當前資料夾內檔案加入索引:git add .
– 查看工作目錄與索引內檔案的不同:git diff
– 提交更新:git commit -m “修改內容”
git 切換、還原與查看紀錄
– HEAD 切換到指定版本:git checkout <git log 雜湊碼>
– 將整個目錄復原到最新的 commit 狀態:git reset — hard
– 加入索引的檔案還原到工作目錄:git reset HEAD
– 本地數據庫還原到前兩個版本:git reset HEAD^^
– 本地數據庫還原到前一個版本,並清除工作目錄:git reset HEAD^ — hard
– 本地數據庫還原到指定 commit:git reset <commit 編號> — hard
– 還原合併前狀態:git reset — hard ORIG_HEAD
– 查看 commit 歷史紀錄:git log
– 查看 commit 詳細歷史紀錄:git reflog
– 觀看線圖:git log — oneline -graph
git 設定遠端數據庫與更新
– 查詢所有遠端數據庫名稱:git remote
– 查詢所有遠端數據庫名稱與網址:git remote -v
– 註冊遠端數據庫:git remote add <origin> <遠端數據庫網址>(origin 為預設遠端數據庫名稱)
– 更新遠端數據庫(將本地分支和遠端分支進行合併):git push <origin> <master>(如要在 push 時順便將遠端數據庫設為預設,讓下次要傳到同個遠庫時只需輸入 git push,即輸入 git push -u origin master)
– 下載檔案到本地數據庫(對本地分支没有影響):git clone <網址> / git fetch <網址>(簡單來說,clone 指令通常只會用在一開始,之後的更新使 fetch/pull 指令;fetch 指令並不會將你本地數據庫中的 master branch 更新到最新的狀態,可以把 git fetch 想成是在下載資料,並不會更新任何的檔案。)
– 更新本地數據庫(將遠端分支和本地分支進行合併):git pull(git fetch + git merge <origin> <master>)
git 分支與合併
– 查看分支:git branch
– 建立分支:git branch <分支名稱>
– 在特定 commit 上加分支:git branch <新分支名稱> <commit 編號>
– 刪除指定分支:git branch -d <分支名稱>
– 切換到指定分支最新版本:git checkout <分支名稱>
– 將指定分支合併到目前分支後:git merge <分支名稱>
– 合併後成為一個新 commit(master 在開啟分支並在分支上提交 commit 後,master 都沒有更動時的合併):git merge <分支名稱> — no-ff
– 合併衝突(Merge Conflicts):合併時,若檔案裡的某一行都被參與合併方修改,將發生合併衝突,檔案會停留在工作目錄上,解決衝突後就能提交(多人協作時,需要先 pull,解決衝突後再 push)

常見合作開發流程

Git flow
  1. 在 master 建立開發用新分支(黃)
  2. 在開發用分支上針對功能再另開分支(桃),完成後合併回開發用分支(黃)
  3. 正式部署前,將程式碼合併在測試分支(綠)上做討論與測試
  4. 將程式碼合併在 master 分支上
  5. 當正式版發生問題,會在修復用分支(紅)上修改程式碼,修復後合併在 master 分支上
GitHub flow
  1. 在 master 建立新分支
  2. 在新分支上開發功能
  3. 申請合併(Pull Request)
  4. 討論與檢視程式碼
  5. 部署測試
  6. 將分支合併到 master


感謝您的閱讀,我試著將生活與自己所學到的知識,以平易近人的方式傳達給正在努力進步的同好,甚至是領域之外卻有興趣的人。如果喜歡我的文章,歡迎贊助我,你的鼓勵也是我進步的動力。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
37會員
31內容數
短篇奇幻作品將不定期更新。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Ray C的沙龍 的其他內容
上面的圖示清楚表示了網站體系架構。如果你不是經驗豐富的網頁開發人員,可能會覺得它很複雜。在我們深入探究每個部分之前,下面的描述應該會讓我們更容易上手。
《魔物獵人 2G》可以說是魔物獵人的經典代數之一,你是否聽到波凱村的背景音樂就如同回到家一般呢?這篇告訴你在 2019 年仍可和朋友順利連線遊玩《魔物獵人 2G》的方法。
❑ 無須預測未來、注意週期就能獲利 巴菲特曾經說過:「長久下來,市場會出現離奇、甚至怪異的現象。一個大錯很可能會磨滅長期累積的成就,因此我們需要本能上即可識別重大風險的人,包括從未遭遇的風險。」塔雷伯的《隨機致富》尤其講述對於不確定性應對的重要。
this 是 JavaScript 的一個關鍵字,也是讓新手困擾許久的主題,今天讓我們用更簡單、直接的方式來了解 this。
為了增進使用者體驗,前端愈來愈複雜,現在就讓我們一起搞懂技術名詞。
你可能已經看過 “ES6” 或 “JavaScript ES6” 一詞,並想知道它實際意味著什麼。別再想了,因為我們將深入研究 ES6 究竟是什麼,以及它與 JavaScript 的關係!
上面的圖示清楚表示了網站體系架構。如果你不是經驗豐富的網頁開發人員,可能會覺得它很複雜。在我們深入探究每個部分之前,下面的描述應該會讓我們更容易上手。
《魔物獵人 2G》可以說是魔物獵人的經典代數之一,你是否聽到波凱村的背景音樂就如同回到家一般呢?這篇告訴你在 2019 年仍可和朋友順利連線遊玩《魔物獵人 2G》的方法。
❑ 無須預測未來、注意週期就能獲利 巴菲特曾經說過:「長久下來,市場會出現離奇、甚至怪異的現象。一個大錯很可能會磨滅長期累積的成就,因此我們需要本能上即可識別重大風險的人,包括從未遭遇的風險。」塔雷伯的《隨機致富》尤其講述對於不確定性應對的重要。
this 是 JavaScript 的一個關鍵字,也是讓新手困擾許久的主題,今天讓我們用更簡單、直接的方式來了解 this。
為了增進使用者體驗,前端愈來愈複雜,現在就讓我們一起搞懂技術名詞。
你可能已經看過 “ES6” 或 “JavaScript ES6” 一詞,並想知道它實際意味著什麼。別再想了,因為我們將深入研究 ES6 究竟是什麼,以及它與 JavaScript 的關係!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本篇文章介紹如何在 Jetson Nano 環境 Ubuntu 2.0 使用 git 及 github.com 進行版本控管。文章快速說明如何安裝、建立版本控管目錄及使用常用的指令。透過簡單的步驟,讀者將能夠有效地管理其程式碼版本,提升開發效率。
今天在解衝突的時候,同事提到了做merge指令時跟在Gitlab上提交merge request的時候是情況是相反的,我想他或許也沒探究過原因。 曾經我也很疑惑為什麼大家都是說發PR,但是越想越不對勁: PR的P指的是pull,為什麼是用拉pull而不是用推push?
更新專案的指令有: 01 `git fetch` 來對專案做「更新 Update」。 02 `git push` 來分享你對專案的「變更 Change」[3]。 03 `git remote` 來管理遠端的儲存庫。 有趣的是,fetch 這個字源於古英語的"fetan", 表示拿來,取回來的意思。
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本篇文章介紹如何在 Jetson Nano 環境 Ubuntu 2.0 使用 git 及 github.com 進行版本控管。文章快速說明如何安裝、建立版本控管目錄及使用常用的指令。透過簡單的步驟,讀者將能夠有效地管理其程式碼版本,提升開發效率。
今天在解衝突的時候,同事提到了做merge指令時跟在Gitlab上提交merge request的時候是情況是相反的,我想他或許也沒探究過原因。 曾經我也很疑惑為什麼大家都是說發PR,但是越想越不對勁: PR的P指的是pull,為什麼是用拉pull而不是用推push?
更新專案的指令有: 01 `git fetch` 來對專案做「更新 Update」。 02 `git push` 來分享你對專案的「變更 Change」[3]。 03 `git remote` 來管理遠端的儲存庫。 有趣的是,fetch 這個字源於古英語的"fetan", 表示拿來,取回來的意思。
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修