CLI (Command Line Tool)
相對於 GUI 用視窗的方式去操控電腦,CLI 透過文字對電腦下指令來操控(一個指令其實就是一個程式)
為甚麼會需要 CLI:因為有很多時候會需要用 CLI,ex. 操控遠端主機、讓程式跑起來、操控 Git
環境設置
下載:Git 官網
在 git bash 使用 command line 指令
基本指令
pwd
:print working directory 印出所在位置
ls
:list 印出資料夾下所有檔案
cd
:change directory 切換資料夾 ex. cd + 資料夾名稱,跳到該資料夾、 cd ..,跳到上一層資料夾
man
:manual 使用說明書
clear
:清空
touch
+ 檔名:建立檔案或更改檔案時間
rm
+ 檔名:remove 刪除檔案
mkdir
+ 資料夾名:make directory 建資料夾
rmdir
+ 資料夾名:remove directory 刪除資料夾
mv
+ 檔名 + 資料夾名/自訂名稱:move 移動檔案到資料夾下/改變檔名
cp
(-r) + 檔名 + 自訂檔名:copy 複製檔案(名稱為自訂檔名);加 -r 是複製資料夾
vim
+ 檔名:進入檔案的文字編輯器,:q
- 跳出,:wq
- 存檔跳出
cat
+ 檔名:印出檔案內容
grep
+ 字:抓出關鍵字 ex. grep o (抓出含有 O 的地方)
wget
+ 網址:下載檔案
curl
+ 網址:送出 request,會回傳 response
一些內容 + >
+ 檔名:把內容覆蓋到檔案(原檔案內容會全部被覆蓋)
一些內容 + >>
+ 檔名:把內容新增到檔案(原檔案內容部會被覆蓋)
Git
可以做版本控制的程式
下載:Git 官網
自己做版本控制
- 需要新的版本:檔案更改過後,就新建一個資料夾(一個資料夾代表一個版本),把檔案放進去資料夾,舊資料夾(舊版本)保有原始檔案,新資料夾(新版本)包含所有舊資料夾中沒被更改的檔案跟更改過的的檔案
- 不想進行版本控制:檔案不要放到資料夾
- 避免版本名稱重複:資料夾(版本)用亂數命名
- 用一個專門的資料夾管理資料夾(版本)建立的順序
- 用一個專門的資料夾來管理最新建立的資料夾(版本)
Git 指令
git init
:告訴 git 要做版本控制 (幫你建立一個 .git 的資料夾在裡面做版本控制)
git status
:查看版本控制的狀態(分支、commit 的狀態)
git add
+ 檔名:把檔案加入版本控制(staged 區域),所有檔案都要加入的話後面接 "." ex. git add .
git rm --cached
+ 檔名:把檔案移出版本控制
git commit -m
+ "敘述" :新建版本,m 是 message
git commit -am
+ "敘述": git commit -m 的功能,把所有(a:all)檔案建立版本
git log
:查看歷史紀錄 (commit 的編號、內容),後接 --oneline 可以看比較簡短的紀錄
git checkout
+ 版本名稱:切換到某個版本
git checkout master
:切換到最新狀態(master)
.gitignore
:用來放不加入版本控制的地方(放一些跟專案比較無關的東西或有帳號密碼之類的訊息)
git commit --amend
:修改 commit message
git reset HEAD^--hard
:取消上一個 commit,改過的東西不會被留下
git reset HEAD^--soft
:取消上一個 commit,但改過的東西會被留下
git checkout --
+ 檔名:在還沒 commit 的狀況下,把檔案恢復上一個樣子
實際使用 git 做版本控制
- 建立一個 .gitignore 的資料夾,把需要忽略的檔案放入 gitignore 這個資料夾
- 用 git add . 把所有新增的檔案加入版本控制,想像成所有檔案被放進一個新建的資料夾(一個資料夾一個版本)
- git commit -am "敘述",把所有加入版本控制 (staged) 的檔案建立版本,該版本就會有一個亂數名稱
- 當有新增的檔案,就重複步驟 2、3
- 當改過舊檔案,就重複步驟 3
branch 分支
- 一個分支一個資料夾
- 每個分支有自己的 commit (分支資料夾 > 版本之料夾 > 檔案)
- 分支合併到主線,主線就會有分支的 commit
git branch -v
:查看有哪些分支
git branch
+ 分支名稱:開新分支
git branch -d
+ 分支名稱:刪除分支
git checkout
+ 分支名稱:切換到分支、把遠端的 branch 抓下來(在分支之間自由穿梭)
git merge
+ 分支名稱:把分支合併進來
git branch -m
+ 新的分支名稱:修改分支名稱
CONFLICT:衝突,兩個分支的檔案改到同一個地方後合併會產生衝突,因為不知道要採用哪個,手動解決要留下來的部分後再 commit,就可解決衝突
GitHub
放 git repository (.git 資料夾) 的地方
其他類似 GitHub 的東西:GitLab、Bitbucket
連結本地端的 repository 跟 GitHub 的 repository
- 點選畫面右上角 " + ",選 New repository,新增 repository
輸入 Repository name, 按 Create repository,就會建立一個 repostory 在 GitHub 上面
會出現一個畫面,依照指示在自己的 git bash 下指令(直接複製就來用可以了)
- or create a new repository on the command line:
如果自己的電腦還沒有建立 git repository 時 - or push an existing repository from the command line
如果自己電腦已經有建立 git repository 時
- 照指示執行之後,就已經把本地端 (自己電腦) 的 repository 跟遠端(GitHub) 的 repository 連結在一起了
把 GitHub 的 repository 跟本地端的 repository 同步
git push origin
+ 分支名稱:把本地端的東西推到 GitHub 上
EX.
git push origin master 把 master 的東西同步到 GitHub
git push origin branch1 把 branch1 的東西同步到 GitHub 上 (如果 GitHub 上面沒有 branch1 就會自動新增)
把本地端的 repository 跟 GitHub 的 repository 同步
git pull origin master
:把 GitHub 的東西同步到本地端
把別人在 GitHub 的 repository 抓下來
- 點選 Fork,把別人這個 repository 複製到自己的帳號(這樣才能把別人的 repository 變成自己的)
- 點選 Code,把網址複製起來
git clone
+ 剛剛複製的網址,就可以把別人的 repository 抓到本地端
在 GitHub 合併分支
- 點選 Compare and pull request
- 輸入一些資訊後點選 Create pull request,就可以看到改動前跟改動後的差異
- 點選 Merge pull request,就可以把分支的東西合併到 master
實際應用 GitHub 連動
假設在 master 更改了檔案:
- 建立版本:
git commit -am "更新某某"
- 同步:
git push origin master
,把本地端 master 的變動同步到 GitHub 上
假設在分支(ex. branch1)更改了檔案:
- 建立版本:
git commit -am "更新某某"
- 同步:
git push origin branch1
,把本地端 branch1 的變動同步到 GitHub 上
假設在 GitHub 更改了檔案:
- 同步:
git pull origin master
,把 GitHub 的變動同步到本地端
GitHub Pages
GitHub 提供的網頁空間
- 點選 Setting
- 往下滑找到 GitHub Pages
- 選擇 master,點選 Save
- 產生一組網址,在後面加上檔案位置就可以看到檔案頁面
Git Hook
Hook:發生某件事時通知我