簡單介紹Git版本控制

Tommy

環境安裝

Mac很幸福可以跳過此步驟

安裝Git for windows

https://git-scm.com/download/win

圖形化介面安裝

江湖在走,指令還是要懂

TortoiseGit

windows推薦

SourceTree

Mac推薦

基本Command指令

今天以windows為主

help

列出內建常用的指令名稱

任何指令 /?

查詢指令的用法

dir

列出目前資料夾裡面的檔案和資料夾

cd

切換資料夾

cd..

回到上層

cd\

回到磁碟機最上層

d:

切換到神秘的低潮

Unix like無磁碟機概念

/dev/sda

/dev/sdb

md

建立資料夾

rd

刪除資料夾

Mac有rm -rf /
Windows有rd \ /s/q 

千萬母湯手殘加眼殘

type

查看檔案內容

如何建立空白檔案

echo.>file.txt

產生空白行的檔案

type nul>file.txt

產生完全空白檔案

del

刪除檔案

move

移動檔案

copy

複製檔案

ren

更改檔名

Git指令操作

git

列出git指令名稱和說明

git init

在目前的資料夾建立本地端檔案庫

git init folder

建立folder資料夾並同時建立本地端檔案庫

git config user.name "tommy"

設定當前檔案庫使用者名稱

git config user.email "tommy@gmail.com"

設定當前檔案庫電子信箱

Git規定:所有commit必須要有使用者名稱和信箱

抓是誰出包比較容易

git config --global user.name "tommy"

設定全域使用者名稱

git config --global user.email "tommy@gmail.com"

設定全域電子信箱

git config --list

列出目前有效的設定

git config --list --local

列出當前檔案庫設定

git config --list --global

列出全域設定

git config --list --system

列出系統設定

git status

查看目前暫存區的狀態

git add .

加入所有檔案到暫存區

git add *.html

加入任何.html檔案到暫存區

git add *.js index.css

加入任何.js檔案和index.css到暫存區(用空白串接)

git reset index.html

取消加入暫存區的index.html

git commit -m "add index.html"

將暫存區的檔案commit到本地檔案庫

git add -u

只加入修改過被追蹤的檔案到暫存區

不包含新增的檔案

git commit -am "update"

被追蹤修改過的檔案commit到本地檔案庫

不包含新增的檔案

git commit --amend -m "modify"

修改最後一次commit的訊息和內容

移除檔案git rm test.html

.gitignore

排除被追蹤的檔案清單

(每個檔案或資料夾一行,可使用萬用字元)

git log

查詢commit紀錄

HEAD

工作目錄比對的基準

master

預設的分支名稱,類似變數指向commit

 

commit發生了什麼事?

HEAD和目前分支(master)都會移到最新的commit上

git cat-file -p HashID

查看hash id的內容

hash id最少4碼以上

100644 blob

一般檔案

040000 tree

資料夾

git show

查看最新commit修改的log包含異動內容

git show v.s. git log

有什麼不一樣?

git show

列出最後一個commit

包含異動內容

git log

列出所有的commit

不包含異動內容

git show CommitID

查看commit id與上一版的差異

git show CommitID abc.txt

查看commit id與上一版的檔案內容差異

如果沒有差異則顯示空白

git show CommitID:abc.txt

查看commit id版的完整檔案內容

git diff

比對暫存區和工作目錄的差異

git diff HEAD

比對HEAD和工作目錄的差異

git diff --cached

比對暫存區和HEAD之間的差異

git diff CommitID CommitID

比對兩個commit之間的差異

很燒腦吧?

複習今天講的指令

git init
git config
git status
git add
git reset
git commit
git log
git cat-file
git show
git diff

下次預告

取出checkout

回復revert

重設reset

分支branch

合併merge

收藏stash

標籤tag

Q&A

簡單介紹Git版本控制Part2

By Yi-Tai Lin

簡單介紹Git版本控制Part2

  • 906