Github – 常用指令

簡介

在這篇想介紹一下Git工具常用指令,雖然我們在前幾篇已經不透過指令可以正常將Github與本地端執行push&pull等的功能實現,但是有些功能還是無法不透過指令來操作Git工具,這篇就講講透過Atom terminal或是用你電腦中的CMD或是Iterm來輸入指令來操作。

版本控制的演進

過去「集中式」版本控制系統中,需要一台專用的伺服器,所有的更新都需要跟這台伺服器溝通。也就是說,萬一這台伺服器壞了,或是沒有網路連線的環境,版本控制功能就沒辦法使用。
而 Git 使用「分散式」的優點是,即使在沒有伺服器或是沒有網路的環境,依舊可以使用 Git 來進行版控,待伺服器恢復正常運作或是在有網路的環境後再進行同步,不會受影響。而且,事實上在使用 Git 的過程中,大多的 Git 操作也都是在自己電腦本機就可以完成。

創建新資料

 // 透過HTTPS從Github下載檔案
 $ git clone github-http-link
 // 移動到 EggyTest 資料夾
 $ cd EggyTest
 // 將專案資料夾建立成 git repository
 $ git init
 // 列出專案資料夾下的檔案和資料夾(-l 參數為列出詳細資料,-a 為列出隱藏資料夾)
 $ ls -la

雖然說這段我們已經透過Atom介面與Github做連結了,但我們還是從頭來介紹一下怎樣透過指令來下載,首先你要再Github中New repository(前幾篇有介紹過),透過git的『clone』來下載並連結,接著透過『init』將該Github做初始化的動作,該動作會在在 Workspace 創建 .git 目錄。

常用指令

  • git status : 透過該指令,可以看到本機端檔案與遠端的Github有哪些變動,當你在本機端有檔案的內容新增、刪減等動作儲存後,輸入指令後可以看到有哪些檔案做變動。

    如上圖,有修改的會以『modified』來當前綴,後面會加上檔名,『deleled』就是遠端有這檔案,在本地端已經刪掉了。而『Untracked files』就是在你本地端新增檔案,遠端則沒有這檔案。
  • git add 檔名:你可以透過指令來將檔案放在暫存區,注意這不代表已經上傳,這指令就像是Atom中將『Unstaged Change』檔案add到『Staged Changed』。
  • git commit -m “描述”:這應該就不用多說了,透過指令進行Commit,並可在指令後方輸入描述文字。
  • git stash : 獲取目前工作目錄的 dirty state,並保存到一個未完成變更的 stack,以方便隨時回復至當初的 state。
git log
git reflog
  • git log & git reflog:有兩種查看commit的紀錄,如上圖,就如同Atom中Git commit視窗中的條列式項目。
  • git push origin [BRANCH_NAME] :這有如Atom中的push按鈕『git push』,而Atom中也可以選擇分支再進行上傳,指令也可以做到該動作『git push origin 分支名稱』。
  • git branch:查看你Github上的分支。
  • git checkout:該功能是對於分支操作的指令,在git checkout 分支名稱,將會切換到該分支,另外的是加上『-b 分支名稱』就是透過指令新增分支並跳轉到新增的分支。
  • git branch -D 分支名稱:刪除分支。這功能在Atom中無法透過GUI或一些功能來刪除分支,必須透過指令,還有一點是,當你正在該分支底下,則無法刪除分支,如上圖,必須切換分支才可以進行刪除。
  • git branch -m <舊分支名稱> <新分支名稱>:修改分支名稱,這也是一個無法透過Atom來進行修改的功能。
  • git remote:為了便於管理,Git要求每個遠程主機(remote)都必須指定一個主機名。git remote命令就用於管理主機名。不帶選項的時候,git remote命令列出所有遠程主機,下列事常用的remote用法。
git remote show <主機名>
git remote add <主機名> <網址>
git remote rm <主機名>
git remote rename <原主機名> <新主機名>

小結

本篇算是一個不管要不要透過Atom來串接Github遠端remote都可以使用到的指令條列,之後有需要用到的人都可以來查詢,本篇列出最常用的指令,但獨獨還沒有列出『merge』這個指令,這我想要獨立一篇來講解,感覺要弄清楚一點在未來使用版本控制軟體會比較容易上手。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *