git 常用操作
1. 撤銷 git add
撤銷所有的已經 add 的檔案
git reset HEAD -- .
撤銷某個檔案或資料夾
git reset HEAD -- filename
2. 撤銷 git commit
git reset --soft HEAD^
HEAD^的意思是上一個版本,也可以寫成HEAD~1
如果你進行了2次commit,想都撤回,可以使用HEAD~2
其他引數解析:
- --soft
不刪除工作空間改動程式碼,撤銷commit,不撤銷git add . - --mixed【預設】
不刪除工作空間改動程式碼,撤銷commit,並且撤銷git add .
這個為預設引數, git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的。 - -- hard
刪除工作空間改動程式碼,撤銷commit,並且撤銷git add .
補充:如果該倉庫到目前為止只有commit過一次程式碼,則會報錯:
$ git reset HEAD^
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
3. git log 檢視簡潔的提交記錄
# 只顯示提交 ID 和 提交資訊
git log --oneline
4. git reset
- 工作區:ls 檢視
- 暫存區:git ls-files
-
soft:git reset --soft 版本ID
v1 v2 v3(這裡我們回退到 v2)
使用 git status 檢視倉庫狀態:提示我們 files3 是一個新檔案,因為 file3 這個檔案是在 v3 版本才新增的,所以對於 v2 來說,這個 file3 就是一個新檔案,這時我們就可以修改一下 file3 的內容,然後重新新增暫存和提交一下就可以了 -
hard:
git reset --hard HEAD^
ls:file3 消失不見(工作區被刪)
git ls-files 暫存區中也不見了 -
mixed(預設):git reset HEAD^
工作區存在
暫存區不見
5. git 中所有引數都是可以回溯的
git reflog
git reset --hard 版本號
6. git diff 檢視差異
預設:比較 工作區和暫存區 之間的差異內容
git diff HEAD:比較 工作區 和 版本庫 之間的差異
git diff -cached:比較 暫存區 和 版本庫 之間的差異
git diff 版本1 版本2:比較 2個版本的 差異內容