[華為云在線課程][Git基礎(chǔ)與實(shí)操][第1章][Git基礎(chǔ)理論篇][Git基本命令]

      網(wǎng)友投稿 736 2025-03-31

      1,Git版本控制下的三種工程區(qū)域 & 文件狀態(tài)

      在學(xué)習(xí)Git常用命令之前,必須再次強(qiáng)化下面幾個(gè)概念。

      Git版本控制下的工程區(qū)域只有三種:

      1,版本庫(kù)(Repository)

      在工作區(qū)中有一個(gè)隱藏目錄.git,這個(gè)文件夾就是Git的版本庫(kù),里面存放了Git用來(lái)管理該工程的所有版本數(shù)據(jù),也可以叫本地倉(cāng)庫(kù)。

      2,工作區(qū)(Working Directory)

      日常工作的代碼文件或者文檔所在的文件夾。

      3,暫存區(qū)(Stage)

      一般存放在工程根目錄.git/index文件中,所以我們也可以把暫存區(qū)叫做索引(index)。

      Git版本控制下的文件狀態(tài)只有三種:

      1,已提交(committed)

      該文件已經(jīng)被安全地保存在本地?cái)?shù)據(jù)庫(kù)中了。

      2,已修改(modified)

      修改了某個(gè)文件,但還沒(méi)有提交保存。

      3,已暫存(staged)

      把已修改的文件放在下次提交時(shí)要保存的清單中。

      2,Git常用命令

      工程準(zhǔn)備

      工程克隆-git clone

      查看工作區(qū)

      查看工作區(qū)的修改內(nèi)容-git diff

      查看工作區(qū)文件狀態(tài)-git status

      文件修改后提交推送

      新增/刪除/移動(dòng)文件到暫存區(qū)-git add / git rm / git mv

      提交更改的文件-git commit

      推送遠(yuǎn)端倉(cāng)庫(kù)-git push

      查看日志

      查看當(dāng)前分支上的提交日志-git log

      分支管理

      列出本地分支-git branch

      新建分支-git branch / git checkout -b

      刪除分支-git branch -d

      切換分支-git checkout

      更新分支-git pull

      合并分支-git merge

      撤銷(xiāo)操作

      強(qiáng)制回退到歷史節(jié)點(diǎn)-git reset

      回退本地所有修改而未提交的-git checkout

      分支合并

      合并目標(biāo)分支內(nèi)容到當(dāng)前分支-git merge / git rebase

      3,Git常用命令實(shí)操

      3.1,工程準(zhǔn)備 git init / git clone

      git init 用于在本地目錄下新建git項(xiàng)目倉(cāng)庫(kù)

      執(zhí)行g(shù)it init后,當(dāng)前目錄下自動(dòng)生成一個(gè)名為.git的目錄,這代表當(dāng)前項(xiàng)目所在目錄已納入Git管理。.git目錄下存放著本項(xiàng)目的Git版本庫(kù),在此不建議初學(xué)者改動(dòng).git目錄下的文件內(nèi)容。.git文件夾默認(rèn)是隱藏的。

      git clone 用于克隆遠(yuǎn)端工程到本地磁盤(pán)

      如果想從遠(yuǎn)端服務(wù)器獲取某個(gè)工程,那么:

      確定自己Git賬號(hào)擁有訪問(wèn)、下載該工程的權(quán)限

      獲取該工程的Git倉(cāng)庫(kù)URL

      本地命令行執(zhí)行g(shù)it clone [URL]或git lfs clone [URL]

      注意,如果你所在的項(xiàng)目git服務(wù)器已支持git-lfs,對(duì)二進(jìn)制文件進(jìn)行了區(qū)別管理,那么克隆工程的時(shí)候務(wù)必使用git lfs clone。否則克隆操作無(wú)法下載到工程中的二進(jìn)制文件,工程內(nèi)容不完整。

      3.2,新增/刪除/移動(dòng)文件到暫存區(qū) git add / git rm / git mv

      在提交你修改的文件之前,需要git add把文件添加到暫存區(qū)

      如果該文件是新創(chuàng)建,尚未被git跟蹤的,需要先執(zhí)行g(shù)it add將該文件添加到暫存區(qū),再執(zhí)行提交。

      如果文件已經(jīng)被git跟蹤,即曾經(jīng)提交過(guò)的。在早期版本的git中,需要git add再提交;在較新版本的git中,不需要git add即可提交。

      git rm 將指定文件徹底從當(dāng)前分支的緩存區(qū)刪除,因此它從當(dāng)前分支的下一個(gè)提交快照中被刪除。

      如果一個(gè)文件被git rm后進(jìn)行了提交,那么它將脫離git跟蹤,這個(gè)文件在之后的節(jié)點(diǎn)中不再受git工程的管理。

      執(zhí)行g(shù)it rm后,該文件會(huì)在緩存區(qū)消失。

      你可以直接從硬盤(pán)刪除文件,然后對(duì)該文件執(zhí)行g(shù)it commit,git會(huì)自動(dòng)將刪除的文件從索引中移除,效果一樣。

      git mv用于移動(dòng)文件,也可以用于重命名文件

      例1:需要將文件codehunter_nginx.conf從當(dāng)前目錄移動(dòng)到config目錄下,可執(zhí)行:

      git mv codehunter_nginx.conf config

      例2:需要將文件codehunter_nginx.conf重命名為new_nginx.conf,可執(zhí)行:

      git mv config/codehunter_nginx.conf config/new_nginx.conf

      3.3,查看工作區(qū) git diff / git status

      git diff

      用于比較項(xiàng)目中任意兩個(gè)版本(分支)的差異,可以用來(lái)比較當(dāng)前的索引和上次提交之間的差異。

      比較兩個(gè)節(jié)點(diǎn)之間的差異:diff --git a/README.md b/README.md

      在diff后面加–name-status參數(shù),只看文件列表:git diff master …/file --name-status

      git status

      [華為云在線課程][Git基礎(chǔ)與實(shí)操][第1章][Git基礎(chǔ)理論篇][Git基本命令]

      用于顯示工作目錄和暫存區(qū)的狀態(tài)。

      使用此命令能看到修改的git文件是否已被暫存,新增的文件是否納入了git版本庫(kù)的管理。

      3.4,提交更改的文件 git commit

      主要是將暫存區(qū)里的文件改動(dòng)提交到本地的版本庫(kù)。

      再次強(qiáng)調(diào),提交這個(gè)動(dòng)作是本地動(dòng)作,是往本地的版本庫(kù)中記錄改動(dòng),不影響遠(yuǎn)端服務(wù)器。git commit一般需要附帶提交描述信息,所以常見(jiàn)用法是:git commit file_name -m “commit message”。

      提交成功后,git日志可查到此次提交的id和提交描述信息。

      如果要一次性提交所有在暫存區(qū)改動(dòng)的文件到版本庫(kù),可以執(zhí)行:git commit -am “commit message”。

      3.5,查看日志 git log

      常用的日志命令格式:git log。

      git log配合不同參數(shù)具有相當(dāng)靈活強(qiáng)大的展示功能,常見(jiàn)的如 --name-status/-p/–pretty/–graph等等。

      3.6,推送遠(yuǎn)端倉(cāng)庫(kù) git push

      在使用git commit命令將自己的修改從暫存區(qū)提交到本地版本庫(kù)后,可以使用git push將本地版本庫(kù)的分支推送到遠(yuǎn)程服務(wù)器上對(duì)應(yīng)的分支。

      成功推送遠(yuǎn)端倉(cāng)庫(kù)后,其他開(kāi)發(fā)人員可以獲取到你新提交的內(nèi)容。

      常用的推送命令格式:git push origin branch_name。

      branch_name決定了你的本地分支推送成功后,在遠(yuǎn)端服務(wù)器上的分支名,其他人據(jù)此可以獲取該分支上的改動(dòng)內(nèi)容。

      你的本地分支名可以與推送到遠(yuǎn)端的分支名不同:git push origin branch_name:new_branch_name

      Windows下大小寫(xiě)不敏感,要避免使用使用大小寫(xiě)區(qū)分文件。

      3.7,分支管理 git branch / git checkout / git branch -d / git pull / git fetch

      git branch命令即可查看本地工程的所有g(shù)it分支名稱(chēng)

      輸入命令git branch命令后git返回了當(dāng)前本地工程所有的分支名稱(chēng),其中master分支前面的"*"表示-當(dāng)前工作區(qū)所在的分支是master。

      如果想查看遠(yuǎn)端服務(wù)器上擁有哪些分支,那么執(zhí)行g(shù)it branch -r即可,返回的分支名帶origin前綴,表示在遠(yuǎn)端;

      如果想查看遠(yuǎn)端服務(wù)器和本地工程所有的分支,那么執(zhí)行g(shù)it branch -a即可。

      git branch和git checkout - 的異同

      相同點(diǎn):

      git branch和git checkout -b都可以用于新建分支(默認(rèn)基于當(dāng)前分支節(jié)點(diǎn)創(chuàng)建)。

      區(qū)別點(diǎn):

      git branch新建分支后并不會(huì)切換到新分支;

      git checkout -b新建分支后自動(dòng)切換到新分支

      常用的新建分支命令格式:git branch new_branch_name / git checkout -b branch_name

      git branch -d和git branch -D都可以用來(lái)刪除本地分支,后者大寫(xiě)表示強(qiáng)制刪除。

      有時(shí)候當(dāng)事分支上包含了未合并的改動(dòng),或者當(dāng)事分支是當(dāng)前所在分支,則-d無(wú)法刪除,需要使用強(qiáng)制刪除來(lái)達(dá)到目的。

      常用的刪除分支命令格式:git branch -d branch_name / git branch -D branch_name

      刪除服務(wù)器上的遠(yuǎn)程分支可以使用git branch -d -r branch_name,其中branch_name為本地分支名。

      刪除后,還要推送到服務(wù)器上才行,即git push origin : branch_name。

      git checkout命令除了創(chuàng)建分支,還用來(lái)切換分支,當(dāng)然比較官方的叫法是"檢出"

      有時(shí)候,當(dāng)前分支工作區(qū)存在修改而未提交的文件,與目的分支上的內(nèi)容沖突,會(huì)導(dǎo)致checkout切換失敗,這時(shí)候,可以使用git checkout -f進(jìn)行強(qiáng)制切換。

      常用的切換分支命令格式:git checkout branch_name。

      git checkout對(duì)象可以是分支,也可以是某個(gè)提交節(jié)點(diǎn)或者節(jié)點(diǎn)下的某個(gè)文件。

      git pull

      作用是從遠(yuǎn)端服務(wù)器中獲取某個(gè)分支的更新,再與本地指定的分支進(jìn)行自動(dòng)合并。

      常用的切換分支命令格式:git pull origin remote_branch:local_branch

      如果遠(yuǎn)程指定的分支與本地指定的分支相同,則可直接執(zhí)行g(shù)it pull origin remote_branch。

      git fetch

      作用是從遠(yuǎn)端服務(wù)器獲取某個(gè)分支的更新到本地倉(cāng)庫(kù)。

      注意,與git pull不同,git fetch在獲取到更新后,并不會(huì)進(jìn)行合并(即git merge)操作,這樣能留給用戶一個(gè)操作空間,確認(rèn)git fetch內(nèi)容符合預(yù)期后,再?zèng)Q定是否手動(dòng)合并節(jié)點(diǎn)。

      常用的獲取遠(yuǎn)端分支更新命令格式:git fetch origin remote_branch:local_branch

      如果遠(yuǎn)程指定的分支與本地指定的分支相同,則可直接執(zhí)行g(shù)it fetch origin remote_branch

      3.8,分支合并 git merge / git rebase

      git merge

      用于從指定的分支(節(jié)點(diǎn))合并到當(dāng)前分支的操作。

      git會(huì)將指定的分支與當(dāng)前分支進(jìn)行比較,找出二者最近的一個(gè)共同節(jié)點(diǎn)base,之后將指定分支在base之后分離的節(jié)點(diǎn)合并到當(dāng)前分支上。分支合并,實(shí)際上是分支間差異提交節(jié)點(diǎn)的合并。

      常用的切換分支命令格式:git merge branch_name。

      git rebase

      用于合并目標(biāo)分支內(nèi)容到目前分支。

      這條命令用于分支合并,git merge也是用于分支合并。如果你要將其他分支的提交節(jié)點(diǎn)合并到當(dāng)前分支,那么git rebase和git merge都可以。

      常用的合并命令格式:git rebase branch_name,git rebase,git merge背后的實(shí)現(xiàn)機(jī)制和對(duì)合并后節(jié)點(diǎn)造成的影響有很大的差異,有各自的風(fēng)險(xiǎn)存在。

      3.9,強(qiáng)制回退到歷史節(jié)點(diǎn) git reset / git checkout

      git reset

      git reset 通常用于撤銷(xiāo)當(dāng)前工作區(qū)中的某些git add/commit操作,可將工作區(qū)內(nèi)容回退到歷史提交節(jié)點(diǎn)。

      常用的工作區(qū)回退命令格式:git reset commit_id。

      git checkout

      用于回退本地所有修改而未提交的文件內(nèi)容。

      這是條有風(fēng)險(xiǎn)的命令,因?yàn)樗鼤?huì)取消本地工作區(qū)的修改(相對(duì)于暫存區(qū)),用暫存區(qū)的所有文件直接覆蓋本地文件,達(dá)到回退內(nèi)容的目的。但它不給用戶任何確認(rèn)機(jī)會(huì),所以謹(jǐn)慎使用。

      常用的回退命令格式:git checkout。

      如果僅僅想回退某個(gè)文件的未提交改動(dòng),可以用git checkout -filename來(lái)達(dá)到目的;如果想將工具區(qū)回退(檢出)到某個(gè)提交版本,可以使用git checkout commit_id。

      Git

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:實(shí)用Word技巧分享:3個(gè)超級(jí)實(shí)用的表格調(diào)整小技巧(word表格調(diào)節(jié))
      下一篇:docx表格制作(docx表格制作手機(jī))
      相關(guān)文章
      亚洲男人天堂2020| 亚洲成aⅴ人片久青草影院| 亚洲日韩中文字幕在线播放| 国产精品亚洲专区无码牛牛| 亚洲AV无码无限在线观看不卡| 91亚洲精品麻豆| 亚洲国产av一区二区三区丶| 亚洲日韩国产精品无码av| 亚洲理论片在线中文字幕| 亚洲高清美女一区二区三区| 亚洲视屏在线观看| 亚洲欧洲自拍拍偷综合| 亚洲人成影院午夜网站| 亚洲一区中文字幕在线观看| 亚洲色精品VR一区区三区| 亚洲精品无码你懂的| 亚洲av午夜电影在线观看| 337p日本欧洲亚洲大胆人人| 五月婷婷亚洲综合| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 亚洲国产电影av在线网址| 亚洲综合色视频在线观看| 亚洲色偷偷综合亚洲AVYP| 亚洲国产精品一区二区久久hs| 亚洲av无码成h人动漫无遮挡 | 亚洲精品久久无码| 精品久久久久久亚洲中文字幕 | 亚洲视频在线观看免费视频| 亚洲成a人不卡在线观看| 亚洲综合久久精品无码色欲| 亚洲第一se情网站| 亚洲一区二区三区无码影院| 亚洲色婷婷六月亚洲婷婷6月 | 亚洲AV日韩AV永久无码下载| 亚洲综合一区二区精品久久| 亚洲情A成黄在线观看动漫软件 | 亚洲欧洲日韩国产综合在线二区| 亚洲精品国产成人中文| 亚洲色大成网站WWW国产| 国产亚洲人成在线影院| 亚洲中文字幕无码爆乳AV|