日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一张图看明白Git的四个区五种状态

發(fā)布時(shí)間:2025/4/16 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一张图看明白Git的四个区五种状态 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

五種狀態(tài)間的順序操作

四個(gè)區(qū)

  • 工作區(qū)(Working Area)
  • 暫存區(qū)(Stage)
  • 本地倉(cāng)庫(kù)(Local Repository)
  • 遠(yuǎn)程倉(cāng)庫(kù)(Remote Repository)

五種狀態(tài)

  • 未修改(Origin)
  • 已修改(Modified)&未追蹤(Untracked)
  • 已暫存(Staged)
  • 已提交(Committed)
  • 已推送(Pushed)

順序操作

  • 第零步:工作區(qū)與倉(cāng)庫(kù)保持一致
  • 第一步:文件增刪改,變?yōu)橐研薷臓顟B(tài)
  • 第二步:git add ,變?yōu)橐褧捍鏍顟B(tài)
$ git add --all # 當(dāng)前項(xiàng)目下的所有更改 $ git add . # 當(dāng)前目錄下的所有更改 $ git add xx/xx.py xx/xx2.py # 添加某幾個(gè)文件
  • 第三步:git commit,變?yōu)橐烟峤粻顟B(tài)
$ git commit -m"<這里寫(xiě)commit的描述>"
  • 第四步:git push,變?yōu)橐淹扑蜖顟B(tài)
$ git push -u origin master # 第一次需要關(guān)聯(lián)上 $ git push # 之后再推送就不用指明應(yīng)該推送的遠(yuǎn)程分支了 $ git branch # 可以查看本地倉(cāng)庫(kù)的分支 $ git branch -a # 可以查看本地倉(cāng)庫(kù)和本地遠(yuǎn)程倉(cāng)庫(kù)(遠(yuǎn)程倉(cāng)庫(kù)的本地鏡像)的所有分支

?

五種狀態(tài)間的撤銷(xiāo)操作

已修改,但未暫存

$ git diff # 列出所有的修改 $ git diff xx/xx.py xx/xx2.py # 列出某(幾)個(gè)文件的修改 $ git checkout # 撤銷(xiāo)項(xiàng)目下所有的修改 $ git checkout . # 撤銷(xiāo)當(dāng)前文件夾下所有的修改 $ git checkout xx/xx.py xx/xx2.py # 撤銷(xiāo)某幾個(gè)文件的修改 $ git clean -f # untracked狀態(tài),撤銷(xiāo)新增的文件 $ git clean -df # untracked狀態(tài),撤銷(xiāo)新增的文件和文件夾# Untracked files: # (use "git add <file>..." to include in what will be committed) # # xxx.py

已暫存,未提交

這個(gè)時(shí)候已經(jīng)執(zhí)行過(guò)git add,但未執(zhí)行g(shù)it commit,但是用git diff已經(jīng)看不到任何修改。

因?yàn)間it diff檢查的是工作區(qū)與暫存區(qū)之間的差異。

$ git diff --cached # 這個(gè)命令顯示暫存區(qū)和本地倉(cāng)庫(kù)的差異 $ git reset # 暫存區(qū)的修改恢復(fù)到工作區(qū) $ git reset --soft # 與git reset等價(jià),回到已修改狀態(tài),修改的內(nèi)容仍然在工作區(qū)中 $ git reset --hard # 回到未修改狀態(tài),清空暫存區(qū)和工作區(qū)

git reset --hard 操作等價(jià)于 git reset 和 git checkout 2步操作

已提交,未推送

執(zhí)行完commit之后,會(huì)在倉(cāng)庫(kù)中生成一個(gè)版本號(hào)(hash值),標(biāo)志這次提交。之后任何時(shí)候,都可以借助這個(gè)hash值回退到這次提交。

$ git diff <branch-name1> <branch-name2> # 比較2個(gè)分支之間的差異 $ git diff master origin/master # 查看本地倉(cāng)庫(kù)與本地遠(yuǎn)程倉(cāng)庫(kù)的差異 $ git reset --hard origin/master # 回退與本地遠(yuǎn)程倉(cāng)庫(kù)一致 $ git reset --hard HEAD^ # 回退到本地倉(cāng)庫(kù)上一個(gè)版本 $ git reset --hard <hash code> # 回退到任意版本 $ git reset --soft/git reset # 回退且回到已修改狀態(tài),修改仍保留在工作區(qū)中。

已推送到遠(yuǎn)程

$ git push -f orgin master # 強(qiáng)制覆蓋遠(yuǎn)程分支 $ git push -f # 如果之前已經(jīng)用 -u 關(guān)聯(lián)過(guò),則可省略分支名

慎用,一般情況下,本地分支比遠(yuǎn)程要新,所以可以直接推送到遠(yuǎn)程,但有時(shí)推送到遠(yuǎn)程后發(fā)現(xiàn)有問(wèn)題,進(jìn)行了版本回退,舊版本或者分叉版本推送到遠(yuǎn)程,需要添加 -f參數(shù),表示強(qiáng)制覆蓋。

總結(jié)

  • 首先,先用git status查看下當(dāng)前狀態(tài)。
  • git reset可以作用于本地倉(cāng)庫(kù),用于回退/前進(jìn)到任意版本,也可以作用于暫存區(qū),用于撤銷(xiāo)暫存區(qū)修改。有hard和soft2個(gè)參數(shù)。soft參數(shù)可以省略,soft參數(shù)表示撤銷(xiāo)的修改仍放在工作區(qū)中。
  • git checkout用于撤銷(xiāo)刪除和修改,git clean -df用于撤銷(xiāo)新增。
  • git diff可以查看工作區(qū)、暫存區(qū)、倉(cāng)庫(kù)之間的修改和差異,參數(shù)不同。

總結(jié)

以上是生活随笔為你收集整理的一张图看明白Git的四个区五种状态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。