git 放棄本地修改

2021-08-26 05:29:24 字數 1714 閱讀 9240

在修改時發現修改錯誤,而要放棄本地修改時

可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘記中間的 「--」 ,不寫就成了檢出分支了!!)。放棄所以的檔案修改可以使用 git checkout .  命令(.不要忘記)。

此命令用來放棄掉所有還沒有加入到快取區(就是 git add 命令)的修改:內容修改與整個檔案刪除。但是此命令不會刪除掉剛新建的檔案。因為剛新建的檔案還沒已有加入到 git 的管理系統中。所以對於git是未知的。自己手動刪除就好了。

可以使用  git reset head filepathname (比如: git reset head readme.md)來放棄指定檔案的快取,放棄所以的快取可以使用git reset head . 命令。

此命令用來清除 git  對於檔案修改的快取。相當於撤銷 git add 命令所在的工作。在使用本命令後,本地的修改並不會消失,而是回到了如(一)所示的狀態。繼續用(一)中的操作,就可以放棄本地的修改。

可以使用 git reset --hard head^ 來回退到上一次commit的狀態。此命令可以用來回退到任意版本:git reset --hard  commitid

你可以使用 git log 命令來檢視git的提交歷史,第一行就是 commitid。

git reset --soft|--mixed|--hard # git push develop develop --force  (本地分支和遠端分支都是 develop)
這裡的就是每次commit的sha-1,可以在log裡檢視到

--mixed    會保留原始碼,只是將git commit和index 資訊回退到了某個版本.

--soft   保留原始碼,只回退到commit資訊到某個版本.不涉及index的回退,如果還需要提交,直接commit即可.

--hard    原始碼也會回退到某個版本,commit和index 都會回退到某個版本.(注意,這種方式是改變本地**倉庫原始碼,慎用!)

當然有人在push**以後,也使用 reset --hard 回退**到某個版本之前,但是這樣會有乙個問題,你線上的**沒有變,線上commit,index都沒有變,當你把本地**修改完提交的時候你會發現全是衝突.....這時換下一種

對於已經把**push到線上倉庫,你回退本地**其實也想同時回退線上**,回滾到某個指定的版本,線上,線下**保持一致.你要用到下面的命令

git revert
revert 之後你的本地**會回滾到指定的歷史版本,這時你再 git push 既可以把線上的**更新。

注意:git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit,看似達到的效果是一樣的,其實完全不同。

第一: 上面我們說的如果你已經push到線上**庫, reset 刪除指定commit以後,你git push可能導致一大堆衝突.但是revert 並不會.

第二: 如果在日後現有分支和歷史分支需要合併的時候,reset 恢復部分的**依然會出現在歷史分支裡.但是revert 方向提交的commit 並不會出現在歷史分支裡

第三: reset 是在正常的commit歷史中,刪除了指定的commit,這時 head 是向後移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 head 是一直向前的

git 放棄本地修改

如果在修改時發現修改錯誤,而要放棄本地修改時,一,未使用 git add 快取 時。可以使用 git checkout filepathname 比如 git checkout readme.md 不要忘記中間的 不寫就成了檢出分支了!放棄所有的檔案修改可以使用 git checkout 命令。此命...

git放棄本地修改

如果在修改時發現修改錯誤,而要放棄本地修改時,一,未使用 git add 快取 時。可以使用 git checkout filepathname 比如 git checkout readme.md 不要忘記中間的 不寫就成了檢出分支了!放棄所有的檔案修改可以使用 git checkout 命令。此命...

git 撤銷,放棄本地修改

一 未使用 git add 快取 時 可以使用 git checkout filepathname 比如 git checkout readme.md 不要忘記中間的 不寫就成了檢出分支了!放棄所有的檔案修改可以使用 git checkout 命令。此命令用來放棄掉所有還沒有加入到快取區 就是 gi...