Git
Git 的介紹
Git 是什麼
何謂版本控制
版本控制就是於不同時間點檔案變更的紀錄。
舉例而言,各位應該都有類似的經驗:
Git 是一個分散式版本控制軟體

Git 是什麼
這樣做的問題是:
- 檔案命名十分隨興,容易搞混
- 多人共同編輯的情況下,不知道是誰變更的,且可能覆蓋到檔案
Git 的特點
1. 免費、開源︰
- Git 是 Linus Torvalds為管理Linux核心程式碼而開發
- Git 的原始程式碼也是用 Git 在做版本控制的
2. 速度快、檔案體積小
- 記錄檔案內容的「快照」(snapshot)而非整個目錄複製貼上
Git 的特點
3. 分散式系統
- 有共同的伺服器,但即使在沒有伺服器或是沒有網路的環境,依舊可以使用 Git 來進行版本控制
- 待伺服器恢復正常運作或是在有網路的環境後再進行同步,不會受影響。而且,事實上在使用 Git 的過程中,大多的 Git 操作也都是在自己電腦本機就可以完成。
Git 的缺點
- 易學難精
- 指令多而複雜
- 但是根據80/20法則,20%指令足以應付80%的工作
GitHub
GitHub 是什麼
- GitHub是透過Git進行版本控制的軟體原始碼代管服務平台
- 2018年6月,Github 被 Microsoft 收購了。
GitHub 跟 Git 的差異
- Git是版本控制的軟體
- GitHub是一個商業網站,本體是一個Git伺服器
- 提供將Git控制的程式碼上傳到網路上的空間
- Github 可與他人共同協作
- Github 可互相交流
Git 的基本操作
下載 Git
先到 Git 的網站下載 git。
https://git-scm.com/
使用者設定
打開 cmd 輸入以下句子︰
- git config --global user.name "Your Name"
「Your name」是你的帳號名稱
- git config --global user.email "youremail@gmail.com"
「youremail」是指你註冊時的信箱
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@gmail.com"確認設定
確認目前設定值:
git config --list
Git 初始化
$ cd Destop/SIRLA/git #切換到目標目錄
$ mkdir git-practice #建立git-practice目錄
$ cd git-practice #切換到git-practice目錄
$ git init #初始化目錄,讓git對這個目錄進行版本控制cmd 指令解釋
cd 指令︰移動你所在的目錄(資料夾)
mkdir 指令︰創建一個目錄 (資料夾)
Git 初始化
$ cd Destop/SIRLA/git #切換到目標目錄
$ mkdir git-practice #建立git-practice目錄
$ cd git-practice #切換到git-practice目錄
$ git init #初始化目錄,讓git對這個目錄進行版本控制git init
執行完後,資料夾中會多一個.git的資料夾,裡面存放的就是git用來進行版本控制的檔案,只要把這個資料夾刪除,git就會解除對這個資料夾的版本控制
Git 的儲存流程

將檔案放置到暫存區
查看目前狀態,因為是空的資料夾,所以暫存區沒有任何東西
輸入 「$ git status」
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)將檔案放置到暫存區
來新增一個檔案
先輸入「 echo "Hello, git." > "welcome.html"」
再輸入 「$ git status」
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
welcome.html
nothing added to commit but untracked files present (use "git add" to track)將檔案放置到暫存區
將檔案新增到暫存區後再看一次狀態
先輸入「 git add welcome.html」
再輸入 「$ git status」
$ git add welcome.html
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: welcome.html將檔案從暫存區提交(commit)到倉庫中
$ git commit -m "initial commit" #將暫存區commit,並用-m參數加入說明
[master (root-commit) 4443229] initial commit
1 file changed, 1 insertion(+)
create mode 100644 welcome.html輸入「$ git commit -m "inital commited"」
「-m " "」的用途是對該文件進行的一些說明,是必須的。
查看提交紀錄
$ git log
commit 4443229c2018ef511f283ae8469e855d8b8c5dab (HEAD -> master)
Author: Sam Yang <samabc75@gmail.com>
Date: Sun Oct 21 13:22:11 2018 +0800
initial commit輸入「$ git log」
查看提交紀錄
$ git log
commit 4443229c2018ef511f283ae8469e855d8b8c5dab (HEAD -> master)
Author: Sam Yang <samabc75@gmail.com>
Date: Sun Oct 21 13:22:11 2018 +0800
initial commit分幾個部分來看:
- 一連串的亂數: 使用SHA-1演算法產生出來的結果,重複機率非常低,用途為做為紀錄的識別
- Author: 誰commit這個紀錄,以及他的email
- Date: 何時commit的
- 最後一行是commit時留下的訊息
Lab02 利用 GitHub 建立個人的 Github page
建立 Git 帳戶
GitHub提供了一個github page的功能,可以供使用者存放靜態網頁(純前端,沒有後端的網頁)
- 申請github帳號
- 創建一個repository叫做,username.githug.io,username請填上你的github帳號名稱。注意,每個帳號只能開一個這樣的repository。
初始化 Git
初始化git,並將檔案上傳至GitHub
$ cd "your directory" #切換到你的資料夾中
$ git init #git初始化
$ git add --all #將所有檔案加入暫存區
$ git commit -m "initial commit" #提交至儲存區
$ git remote add origin https://github.com/Bluebell3310/Bluebell3310.github.io #新增遠端位置,名稱命名為origin,伺服器位置為後面那一串
$ git push -u origin master #將master分支中推向origin這個位置Git & Github教學
By sheep_of_block
Git & Github教學
- 72