撤銷add操作
如果是在“Changes to be committed” 這行下面的,就說明是已暫存狀態(tài)。也就是說這些文件被add過,但是沒有commit。如果此時提交,那么該文件此時此刻的版本將被留存在歷史記錄中。但是這些文件是被.ignore忽略的,所以我們應該取消add。
git reset :可以將當前倉庫回退到歷史的某個版本
第一種用法:回退到上一個版本(HEAD代表當前版本,有一個^代表上一個版本,以此類推)
git reset --hard HEAD^
第二種用法:回退到指定版本(其中d7b5是想回退的指定版本號的前幾位)
git reset --hard d7b5
git reset HEAD 路徑/文件名: 對某個文件進行撤銷
git reset HEAD :如果不指定文件名,則撤銷add的所有文件
撤銷文件修改
如果“Changes not staged for commit” 這行下面,說明已跟蹤文件的內容發(fā)生了變化,但還沒有放到暫存區(qū)。
git checkout -- 路徑/文件名:撤銷對該文件的修改
git checkout -- . :撤銷對所有文件的修改
執(zhí)行git commit 之后的撤銷
git log:查看提交記錄
git reset commitID?:可以撤銷,不對代碼修改進行撤銷,可以繼續(xù)進行git commit提交修改
git reset --soft commitID :可以回退commit,代碼屬于git add 的那個狀態(tài),軟重置,只回退commit信息,如果需要提交,繼續(xù) commit就行。
git reset --mixde commitID :和第一種情況一樣,默認不寫mixed就是第一種,只末流源碼,回退commit和index信息,如果需要提交,還需要執(zhí)行git add ,和 git commit,
git reset --hard commitID?:什么都不要了,徹底回到上個版本.
執(zhí)行 git push 之后
git revert commitID :會把此次操作之前和之后的commit都會保留,并把這次撤銷作為一次新的commit
git reset 和 git revert 比較
git reset 是還原本地index的狀態(tài)或者修改本地head的位置,一般適用于,比如我們本地有多個commit,比如1,2,3這時候我們不想要2,3,了,想從1,開始開發(fā),然后新建一個分支,這時候就用git reset ,撤銷那兩次修改,然后繼續(xù)開發(fā),只影響本地,不影響遠程,可以根據(jù)自己的需求選擇軟重置還是硬重置
git revert 是撤銷push到遠程的某次提交,用一次新的提交覆蓋原來的修改。