git基礎操作(詳細版)
git
初始化
給某個資料夾初始化 git
git init
建立版本
給該資料夾下建立一個版本,需要該資料夾下的檔案有所變化,因此建立一個檔案在該資料夾下面,然後操作以下兩步
git add code.txt
git commit -m '關於該版本的註釋、說明'
檢視版本記錄
git log
版本之間並不是記錄了全部的檔案內容資訊,而是隻記錄目前版本相較上一個版本變化了那些。比如添加了一行程式碼,或者刪除了一行註釋。
如果版本多長顯示不下,可以使用簡介模式
git log --pretty=oneline
HEAD
HEAD表示當前最近的一個版本,上一個版本是 HEAD ^
HEAD~1
。如果是上100個版本 則是 HEAD~100
版本回退
如果需要將當前版本回退到上一個版本,或者上兩個版
git reset --hard HEAD^
# 或者
git reset --hard HEAD~2
版本去向指定版本
如果想要從當前的版本去向曾經提交過的任何一個版本。
git reset --hard 版本號
上例可以看出,在遷移版本的時候,git並沒有刪除任何一個版本,只是指標指向了不同的位置而已。
檢視在git曾經操作的記錄
git reflog
工作區和暫存區
工作區指的是,git當前工作的根目錄位置,即是工作區。即 .git
檔案所在的位置
版本庫指的是git建立的 .git
暫存區指的是版本庫中的一個非常重要區域,用於暫存提交的檔案修改,使用下面命令 git add
可以新增修改到暫存區
而 git commit
則是把暫存區中的所有修改,一次性的提交成一個版本記錄。
在提交版本之前可以多次將修改提交到暫存區,最後一次性的提交成版本
檢視當前工作區的狀態
git status
撤銷修改
- 當加入到暫存區的檔案被再次修改後,如果想要提交保留修改則使用
git add
再次加入到暫存區,如果不想要修改了,則可以使用下面命令撤銷修改。也就是相當於使用暫存區來覆蓋工作區的修改。
git checkout -- 檔名
- 如果上面修改的檔案使用
git add
git reset HEAD 檔名
再使用 git checkout
則可以將此次修改從工作區徹底刪除掉
總結:想要撤銷修改的幾種case
- 修改了工作區的檔案,沒有提交暫存區,想直接丟棄
git checkout
- 修改了檔案,也提交了暫存區,還是想丟棄 先
git reset HEAD
再git checkout
- 修改類檔案,提交了暫存區,也提交了版本庫,則可以使用
git reset --hard 版本號
直接回到指定的版本。
檔案對比
- 對比修改了的工作區內容和最近版本HEAD內容有什麼不同,使用:
git diff HEAD -- 檔名
- 對比兩個版本之間,某個檔案的不同
# 對比HEAD版本和HEAD的上一個版本之間,某個檔案(非根目錄帶地址)的不同
git diff HEAD HEAD^ -- 檔名
注:
如圖所示,結果中的 --- +++
是按照diff後面的版本順序來看
---
代表當前最新的HEAD
+++
代表HEAD^,即HEAD的上一個版本
檔案內容中沒有 - +
符號的,表示兩個檔案相同的地方,帶有 - +
符號的表示兩個檔案不同的地方,其中帶有 -
表示,該不同存在於HEAD 帶有+
表示該不同存在於HEAD^(即HEAD上一個版本)
刪除檔案
刪除檔案,也是工作區檔案的改修,操作方法和檔案的修改是一樣的
如果刪除了工作區的檔案,想要撤銷刪除。和工作區的檔案被修改了,要撤銷一樣使用
git checkout -- 檔名
工作區的檔案被刪除,想將刪除的操作新增到暫存區,以下語句均可
git rm 檔名
git add 檔名
提交刪除到版本
git commit -m '註釋'