Git & Github

版本控制與平台託管。

首先分別來介紹 Git 與 Github:

  1. Git:分散式版本控制系統。

    一般來說版本控制又可以分為中央式分散式系統。

    • 中央式:例如SVNCVS等,主要在一個伺服器進行,由中央管理存取權限「鎖上」檔案庫中的檔案,一次只能讓一個開發者進行工作。
    • 分散式:例如GitBitKeeperMercurial等,讓不同開發者直接在各自的本地檔案庫工作,並容許多個開發者同時更動同一個檔案,而每個檔案庫有另外一個合併各個改變的功能。分散式系統讓開發者能在沒有網路的情況下也能繼續工作,也讓開發者有充分的版本控制能力,而不需經中央管理者的許可,但分散式系統仍然可以有檔案上鎖功能。
  2. Github:支援 git 程式碼存取和遠端托管的平台服務,有許多的開放原始碼的專案都是使用 Github 進行程式碼的管理。

以下將條列我常用的 Git 指令:

  • mkdir demo:創建一個叫做 demo 的資料夾。

  • touch index.html:新增 index.html 這個檔案。

  • cd:cd 加一個空白鍵後,再按下 tab 鍵會列出當前目錄的清單。

  • cd demo:前往 demo 這個資料夾。

  • cd ..:回資料夾的上一層。

  • cd ~:回到電腦最外層,像是根目錄 Home 之類的。

  • git init:初始化 git,創建 git 儲存庫。

  • git clone [Repository URL]:複製遠端的 Repository 檔案到本地端。

  • git status:檢查本地端檔案異動狀態。

  • git add [檔案或資料夾]:將指定的檔案或資料夾加入版本控制。用 git add . 可加入全部。

  • git commit -m "提交說明內容":提交目前的異動並透過 -m 參數設定摘要說明文字。

  • git stash:獲取目前工作目錄的 dirty state,並保存到一個未完成變更的 stack,以方便隨時回復至當初的 state。

  • git log:查看先前的 commit 記錄。

  • git push:將本地端 Repository 的 commit 發佈到遠端。

  • git push origin [BRANCH_NAME]:發佈至遠端指定的分支。

  • git branch:查看分支。

  • git branch [BRANCH_NAME]:建立分支。

  • git checkout [前四碼]:取出指定的分支。

  • git checkout -b [前四碼]:建立並跳到該分支。

  • git branch -d [前四碼]:強制刪除指定分支(須先切換至其他分支再做刪除)。

  • git reset --hard [前四碼]:強制恢復到指定的 commit。

  • git branch -m <OLD_BRANCH_NAME> <NEW_BRANCH_NAME>:修改分支名稱。

  • git pull:將最新版本 pull 下來,此時會自動進行 merge。

  • git fetch:有時候不希望 pull 下來導致自己的數據庫太亂又擔心有衝突時,可以先使用下面這個指令。等到看過沒問題後,再進行合併的動作。如果不滿意,不需要撤銷,git fetch對本地分支没有影響。