Git撤銷操作

2022-05-03 22:42:20 字數 1982 閱讀 6443

——撤銷已經修改,但是還沒有新增到暫存區的操作:

解決方案:

有兩種情形:

第一種情形:如果乙個檔案是新建的檔案,沒有untrack,說明這個檔案在庫里就沒有版本,所以用git rm 命令是匹配不到的。所以這種檔案是沒有跟蹤版本的,也就不能知道,到底修改了什麼。如果要跟蹤,就要add到tracking檔案列表當中;

這種檔案自然就沒有撤銷之說了,如果不想要了,就只能直接執行刪除操作:

# 刪除 untracked files

git clean

-f# 連 untracked 的目錄也一起刪掉

git clean

-fd# 連 gitignore 的untrack 檔案/目錄也一起刪掉 (慎用,一般這個是用來刪掉編譯出來的 .o之類的檔案用的)

git clean

-xfd

# 在用上述 git clean 前,牆裂建議加上 -n 引數來先看看會刪掉哪些檔案,防止重要檔案被誤刪

git clean

-nxfd

git clean

-nfgit clean

-nfd

第二種情形:如果乙個檔案已經在版本庫中,要撤銷對這個檔案未暫存的修改,可以使用git checkout 來更新檔案來撤銷更改:

git checkout filename

——撤銷已經新增到暫存區域的修改

解決方案1:

分兩步:第一步將檔案從暫存區移除:

git reset head filename

第二步:放棄對檔案的修改:

git checkout filename

——撤銷已經提交到版本庫的修改:

解決方案:

在git中,用head表示當前版本,上乙個版本就是head^,上上個版本就是head^^,要是上一百個版本,就可以寫成head~100

# 回退到上乙個版本

git reset

--hard head

^# 回退到上上個版本

git reset

--hard head

^^# 回退到上100個版本

git reset

--hard head

~100

如果要回退或前進到某個特定版本,需要借助git reflog檢視所有commit_id,然後git reset --hard head commit_id 來跳轉

# 回退到特定版本777b7eb

git reset

--hard

777b7eb

解決方案二:

使用git revert commit_id 進行還原

# 還原到上乙個版本

git revert head

# 還原到某個特定的版本

git revert commit_id

注意:以上兩個方案的區別是,revert會生成乙個新的commit版本,同時生成乙個commit_id;而reset不會生成新的commit,只會生成乙個監控的commit_id

來自為知筆記(wiz)

git撤銷操作

當改動還沒有被提交之前,它們仍然被稱之為 本地 改動。這些在你的工作目錄的修改還仍然在本地,它們屬於未被提交的改動。有時候你對 進行了一些修改,但是發現這些改動帶來的問題比之前還要多。在這種情況下,你可能想要放棄你剛剛的改動,讓 恢復到你改動之前的版本,也就是上次提交之後的狀態。恢復乙個檔案到上次提...

Git撤銷操作

在使用git的過程中,我們可能想要撤銷某些操作,在不同的階段撤銷的命令有所區別。撤銷暫存的檔案 當我們使用git add命令將檔案新增到暫存區域後,想要取消新增的檔案,操作的命令如下 git reset head 檔名 撤銷對檔案的修改 當我們對檔案進行修改後 還沒有提交到暫存區 不想保留對它的修改...

Git各種撤銷操作

git reset head 取消add操作並保留修改 git checkout 若繼續該命令,則會刪除掉剛剛的修改內容git reset soft 可以回退到某個commit並儲存之前的修改 從git log中取,取前7位即可 git reset hard 回退到某個commit不保留之前的修改p...