git 常用操作

爱新觉罗LQ發表於2024-04-27

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
  1. soft:git reset --soft 版本ID
    v1 v2 v3(這裡我們回退到 v2)
    使用 git status 檢視倉庫狀態:提示我們 files3 是一個新檔案,因為 file3 這個檔案是在 v3 版本才新增的,所以對於 v2 來說,這個 file3 就是一個新檔案,這時我們就可以修改一下 file3 的內容,然後重新新增暫存和提交一下就可以了

  2. hard:
    git reset --hard HEAD^
    ls:file3 消失不見(工作區被刪)
    git ls-files 暫存區中也不見了

  3. 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個版本的 差異內容

7. 忽略檔案 .gitignore