人生不能重來,但Git可以
當執行 git init 初始化指令後,會在該資料夾下面新增一個 .git
的資料夾,該資料夾就是 Git Repository 的本體所在。其中包含 blob objects, branch, remote, config 設定檔等。.git
儲存了 Git 所有資訊。在 Local 端對 Git 的所有操作,也都是反映在這個資料夾中。
.git
內包含幾個部分
當我們每次進行 branch 切換時,
在git中最常用的指令
git clone <url>
: 將遠端數據庫克隆一份至本地git add
: 將檔案加入至暫存區域git commit
: 將存於暫存區域的檔案提交到本地儲存庫
git push origin <branchName>
: 推至遠端數據庫
git pull origin <branchName>
: 將遠端數據庫與本地分支同步git checkout <branchName>
: 在本地分支切換(連動工作目錄,如基礎概念所示)commit 重點在於讓協同夥伴了解做了那些改變
Why ? 為了甚麼而做,可能是使用者提了什麼需求、發現了那些BUG...
What ? 做了什麼
How ? 如何做
如何修改 commit 紀錄
git commit --amend -m "新訊息"
git rebase -i <須回朔的範圍SHA-1值>
跳出 Vim 編輯器:
pick ec327e4 emcs 功能開啟
pick d3f0b4a emcs 功能初版
pick 5b72b9e sqc 功能新增
pick b5ba78a sqc first commit
說明: reword ec327e4 emcs 功能開啟
reword d3f0b4a emcs 功能初版
pick 5b72b9e sqc 功能新增
pick b5ba78a sqc first commit
上面選擇修正兩項commit訊息,按下儲存離開後,會再跳出vim介面即可修改內容,如下
ee6e6d6 sqc 功能新增
8c2b80f emcs 功能初版(commit修正)
31726f3 emcs 功能開啟(commit修正)
1507b8b Initial commit
穿梭各版本
git reflog
查看所有紀錄
git log --oneline -n
可以查看目前所在分支前 n 次的commit紀錄
使用 reset
git reset --hard HEAD
回復到最新提交版本git reset --hard HEAD~
等於 ~1 回復到上一個提交版本git reset --hard HEAD~n
n 等於往上第幾個提交版本 回復之前指定的提交版使用 revert
git revert HEAD
"遠程版本回推"
git push -f origin branchA
整理分支
在開發過程中,為了確保主線不被開發過程中的代碼影響,所以我們會開立許多分支(功能),這樣做的好處是可以獨立開發互不影響,但相對的就會有許多支線,相當混亂的狀況,**所以當我們開發完成後,可以先做分支整理
**在推至主線上,這樣在查看紀錄時也比較方便。
git branch -d <branchName>
git push -d origin <branchName>
git reset HEAD^
(reset預設是mixed,所以檔案會被丟回工作區)請問 Commit 中的 What 與 How 很像,要如何區分,有時候會不知道應該寫在 What 還是 How