關(guān)于git撤回、撤銷代碼的幾種方式,撤回add,撤回commit,撤回push,git reset 和 git revert 的區(qū)別
沒有添加到暫存區(qū),就是沒有執(zhí)行 git add
git checkout . 或者 git reset --hard
添加到暫存區(qū),就是執(zhí)行 git add 了
git reset HEAD . 會撤銷回到 工作區(qū)
git reset --hard 會徹底撤回,回到原始狀態(tài)
執(zhí)行g(shù)it commit 了
1.git reset commitID 可以撤銷,不對代碼修改進行撤銷,可以繼續(xù)進行g(shù)it commit提交修改
2.git reset --soft commitID 可以回退commit,代碼屬于git add 的那個狀態(tài),軟重置,只回退commit信息,如果需要提交,繼續(xù) commit就行。
- git reset --mixde commitid 和第一種情況一樣,默認(rèn)不寫mixed就是第一種,只末流源碼,回退commit和index信息,如果需要提交,還需要執(zhí)行g(shù)it add ,和 git commit,
- git reset --hard commit 什么都不要了,徹底回到上個版本.
執(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到遠程的某次提交,用一次新的提交覆蓋原來的修改。