編程小知識(shí)【git-0002】git常用操作命令-代碼撤銷(xiāo)和撤銷(xiāo)同步
# 列出所有的修改
git diff
# 列出某(幾)個(gè)文件的修改
git diff xx/xx.java yy/yy.java
# 撤銷(xiāo)項(xiàng)目下所有的修改
git checkout
# 撤銷(xiāo)當(dāng)前文件夾下所有的修改
git checkout .
# 撤銷(xiāo)某幾個(gè)文件的修改
git checkout xx/xx.java yy/yy.java
# untracked狀態(tài),撤銷(xiāo)新增的文件
git clean -f
# untracked狀態(tài),撤銷(xiāo)新增的文件和文件夾
git clean -df
已暫存,未提交
已執(zhí)行g(shù)it add,但未執(zhí)行g(shù)it commit,但是用git diff已經(jīng)看不到任何修改。 因?yàn)間it diff檢查的是工作區(qū)與暫存區(qū)之間的差異。
# 這個(gè)命令顯示暫存區(qū)和本地倉(cāng)庫(kù)的差異
git diff --cached
# 暫存區(qū)的修改恢復(fù)到工作區(qū)
git reset
# 回到已修改狀態(tài),修改的內(nèi)容仍然在工作區(qū)中
git reset --soft
# 回到未修改狀態(tài),清空暫存區(qū)和工作區(qū),等于git reset 和 git checkout 2步操作
git reset --hard
# 與git reset等價(jià),工作區(qū)文件內(nèi)容不變,并清空暫存區(qū)
git reset --mixed
已提交,未推送
執(zhí)行g(shù)it commit之后,會(huì)在倉(cāng)庫(kù)中生成一個(gè)版本號(hào)(hash值),標(biāo)志這次提交。之后任何時(shí)候,都可以借助這個(gè)hash值回退到這次提交。
# 比較2個(gè)分支之間的差異
git diff <branch-name1> <branch-name2>
# 查看本地倉(cāng)庫(kù)與本地遠(yuǎn)程倉(cāng)庫(kù)的差異
git diff master origin/master
# 回退與本地遠(yuǎn)程倉(cāng)庫(kù)一致
git reset --hard origin/master
# 回退到本地倉(cāng)庫(kù)上一個(gè)版本
git reset --hard HEAD^
# 回退到任意版本
git reset --hard <hash code>
# 回退且回到已修改狀態(tài),修改仍保留在工作區(qū)中
git reset --soft/git reset
已推送到遠(yuǎn)程
# 強(qiáng)制覆蓋遠(yuǎn)程分支
git push -f orgin master
# 如果之前已經(jīng)用 -u 關(guān)聯(lián)過(guò),則可省略分支名
git push -f