簡單記錄一下 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
1 | $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
複製以上內容,到終端機視窗貼上並執行。
安裝完後,再複製以下內容,
1 | $ brew install git |
到終端機視窗貼上並執行。
使用者設定
剛開始使用時 Git ,首先要設定名稱跟 e-mail 信箱
1 | $ git config --global user.name "your_name" |
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 目錄刪除就可以