avatar

目錄
Git 基本介紹

簡單記錄一下 Git 學習過程

Git

  • Git 是一個分散式版本控制軟體,可藉由它產生一個儲存庫( git Repository)
  • 可在自己本機電腦跟遠端伺服器儲存及管理檔案,並做同步處理。
  • 紀錄管理有使用 Git 的目錄內的檔案增刪、檔案內容的修改。
  • 有圖形化介面可以使用,例如:SourceTree。

終端機指令介紹

在操作 Git 之前,先來介紹一下終端機的基本指令

ls

查看目錄中的檔案列表

ls -la

列出隱藏文件

cd ~

前往主目錄

pwd

查看目前所在目錄位置

mkdir test

建立 test 的子目錄

cd test

切換到 test 目錄

cd ..

回到上層目錄

touch index.html

新增 html 檔,若目錄內已有檔案時,會修改檔案時間

cp

複製文件

mv

移動檔案

rm index.html

刪除檔案

rm -R

刪除資料夾與其內所有檔案

安裝Git

到官方網站根據自己的作業系統下載
https://git-scm.com/downloads

或是透過 Homebrew 來下載
https://brew.sh/index_zh-tw.html

Code
1
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

複製以上內容,到終端機視窗貼上並執行。
安裝完後,再複製以下內容,

Code
1
$ brew install git

到終端機視窗貼上並執行。

使用者設定

剛開始使用時 Git ,首先要設定名稱跟 e-mail 信箱

Code
1
2
$ git config --global user.name "your_name"
$ git config --global user.email "your_email"

Git 區塊

Git 有三個檔案存放區塊

如圖所示,分為
工作目錄 (未 add ),初始狀態。
暫存區 (已 add ,未 commit )
儲存區 (已 commit )

Git 指令(終端機)

git init “要板控的專案目錄”

初始化專案,開始版控

git add .要放入存放區的檔案

(ex. git add .gitignore )

git add .

當前目錄所新增及修改的檔案加到暫放區(若是在根目錄執行,大致上等於 git add -A)

git add -A

整個專案目錄所有的修改都加入到暫放區

git status

看暫放區狀態

git commit -m “提交訊息(註解)”

加入註解後,將專案目錄儲存到儲存庫

git log —oneline

看訊息

git blame index.html

查看檔案內容是誰修改(e.g. index.html)

Git 分支

git branch ‘分支名稱’

新增分支 dog(分支可當成貼上標籤)

git branch -d ‘分支名或id’

刪除分支,若參數為 -D ,則是強制刪除

git branch

查看分支 名稱前有 * 的是 head 所在

git branch -f master 版本號碼

將 master 移至該版本號碼

git checkout ‘分支名稱或版本id’

切換到該分支或該版本

git checkout -b dog

建立 dog 分支並切換過去

git merga ‘分支名稱’

合併該分支

git rebase ‘分支名稱’(另一種合併方式 )

改變 base (不會產生合併節點)

git reset commit_id(變回該版本)

回到某個版本,原本內容會回到工作目錄
–mixed 檔案丟回工作目錄
–soft 檔案丟回暫存區
–hard 直接刪掉

git reflog

看 log

git reset commit_id^

回到該版本的前一個狀態 幾個 ^ 等於回前幾個

git reset HEAD~2

回到 HEAD 的前2個狀態

git tag 1.0.0 commit_id

貼上標籤

git revert

撤消一個commit 同時建立一個新的

遠端資料庫操作(e.g. GitHub)

ps.先到 GitHub 新增一個儲存庫

git remote add origin “遠端 git 網址”

連接遠端儲存庫。origin 代表遠端節點,名稱可修改。

git remote -v

查看遠端 Git 的目的地

git push origin master

把本地的 master 分支推送到 origin 這個遠端節點並在遠端形成一個 master 分支

git pull origin master

到 origin 這個遠端節點, 抓 master 分支的內容,並在本地電腦建立一個 origin/master 分支,同時與本地的 master 分支進行合併

git fetch origin master

到 origin 這個遠端節點, 抓 master 分支的內容,並在本地電腦建立一個 origin/master 分支

git clone “遠端 Git 網址”

把遠端 Git 網址的內容複製ㄧ份到本地端電腦

Git 情況處理

1.遠端內容比本機上的新

Git push 時發生以下錯誤:

error: failed to push some refs to ‘https://github.com/xxxx/xxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.

這段訊息的意思是線上版本的內容比你電腦裡這份還要新,所以 Git 不讓你推上去。可用 git pull origin master —rebase (內容抓下來之後請使用 Rebase 方式合併。)
盡量不要用 git push -f origin master 會把自己的檔推上去蓋掉他人的,並以自己的為主。
ps.多人的話,盡量開自己的分支來做

2.不想在 Git 內放機密檔案

$ touch .gitignore (建立Git 忽略檔案, 然後去編輯 gitignore. 已經存在的黨無效)

內容可放
nom-debug.log npm除錯紀錄
node_modules 專案依賴關係
.DS_Store OSX資料夾屬性
.tmp 暫時性檔案 ~

不想再用版控

.git 目錄刪除就可以

參考
為你自己學 Git
Git: 如何從特定 commit 切新的分支?