git撤銷操作

2021-08-19 23:53:27 字數 1322 閱讀 5791

當改動還沒有被提交之前,它們仍然被稱之為 「本地」 改動。這些在你的工作目錄的修改還仍然在本地,它們屬於未被提交的改動。

有時候你對**進行了一些修改,但是發現這些改動帶來的問題比之前還要多。在這種情況下,你可能想要放棄你剛剛的改動,讓**恢復到你改動之前的版本,也就是上次提交之後的狀態。

恢復乙個檔案到上次提交之後的狀態,你可以使用 「git checkout」 命令:

git checkout -- file/to/restore.ext

我們已經知道了 「checkout」 命令主要是用來切換分支用的。但是你同樣可以給這個命令附帶上 「--」 引數,並加上用乙個空格來分隔的檔案路徑。這個操作將撤銷在特定檔案上所有的未提交的改動。

如果你想要放棄你在工作副本中的所有本地改動,並讓你的本地副本恢復到上次提交之後的版本,你可以使用 「git reset」 命令:

git reset --hard head

上面這個操作會通知 git 將你本地副本上的所有檔案替換到和 「head」 分支一致的版本(也就是上次提交之後的版本狀態)上,並放棄所有的本地改動。

撤銷已提交的改動

有時你也許想撤銷某乙個之前的提交。例如當你發現你的改動存在錯誤,或是整個改動就是錯誤的,又或者你的客戶決定不需要這個改動了等等。

使用 「git revert」 命令可以撤銷某個之前的提交。但是這個命令並不是刪除那個提交,相反的,它是恢復那個提交的改動,這只是看起來像是撤銷而已。這個操作實際上會自動產生乙個新的提交。在提交中包括了你想要撤銷的那個提交的所有反向改動。例如在原始提交中,你在某乙個位置新增一些字元,那麼這個恢復提交就會把這些字元刪除掉。

如果想要撤銷已提交的改動,你只需要簡單地給出這個提交的版本號,可以通過git log檢視

git log

commit 364d412a25ddce997ce76230598aaa7b9759f434

另外一種撤銷提交的方法是使用 「git reset」 命令。這個操作不會自動產生乙個新的提交,或是刪除你要撤銷的提交,它會重置你當前的 head 分支到乙個特定舊的版本,也被稱作 「回滾」 到舊的版本:

git reset --hard 2be18d9

在執行了這個操作之後,你當前簽出的分支將被重置為版本 2be18d9。在這個版本之後的乙個或者多個版本將被真正的放棄,它們也不會顯示在分支的歷史記錄中。

如果在這個命令上使用 「--hard」 引數則一定要小心,git 將會丟棄所有你當前可能擁有的本地改動。整個專案將會被恢復成乙個之前的舊版本。

如果你使用 「--keep」 引數來替代 「--hard」 引數,那麼在 「回滾」 到的版本之後的所有改動將會轉換成本地改動,並保留在你的工作目錄中。

Git撤銷操作

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

Git撤銷操作

撤銷已經修改,但是還沒有新增到暫存區的操作 解決方案 有兩種情形 第一種情形 如果乙個檔案是新建的檔案,沒有untrack,說明這個檔案在庫里就沒有版本,所以用git rm 命令是匹配不到的。所以這種檔案是沒有跟蹤版本的,也就不能知道,到底修改了什麼。如果要跟蹤,就要add到tracking檔案列表...

Git各種撤銷操作

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