摘要:使用此命令能看到那些修改被暫存到了哪些沒(méi)有哪些文件沒(méi)有被到。需要說(shuō)明一點(diǎn),是本地的,不會(huì)通過(guò)命令上傳到上。查看現(xiàn)有的所有儲(chǔ)藏,此命令顯然暗示了可以多次保存工作進(jìn)度,并用在恢復(fù)時(shí)候選擇。
Git 版本庫(kù)原理
Git的版本庫(kù)里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。
工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不算工作區(qū),而是Git的版本庫(kù)
#創(chuàng)建文件 $ mkdir myapp #進(jìn)入文件 $ cd myapp #初始化代碼倉(cāng)庫(kù) $ git init #把需要提交的所有修改放到暫存區(qū)(Stage) $ git add file #提交所有文件 #$ git add . #提交所有.js格式文件 #$ git add *.js #強(qiáng)制添加 #$ git add -f file #提交代碼 $ git commit -m "commit info"查看
#查看歷史記錄,git log命令顯示從最近到最遠(yuǎn)的提交日志 $ git log #查看分支合并圖 $ git log --graph #Git提供了一個(gè)命令git reflog用來(lái)記錄你的每一次命令: $ git reflog #git status命令用于顯示工作目錄和暫存區(qū)的狀態(tài)。使用此命令能看到那些修改被暫存到了, 哪些沒(méi)有, 哪些文件沒(méi)有被Git tracked到。git status不顯示已經(jīng)commit到項(xiàng)目歷史中去的信息。 $ git status #當(dāng)暫存區(qū)中沒(méi)有文件時(shí),git diff比較的是,工作區(qū)中的文件與上次提交到版本庫(kù)中的文件。 #當(dāng)暫存區(qū)中有文件時(shí),git diff則比較的是,當(dāng)前工作區(qū)中的文件與暫存區(qū)中的文 $ git diff #比較工作區(qū)中的文件與版本庫(kù)中文件的差異。HEAD指向的是版本庫(kù)中的當(dāng)前版本,而file指的是當(dāng)前工作區(qū)中的文件。 $ git diff HEAD -- file版本回退:
#Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中,用HEAD表示當(dāng)前版本,上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)回退版本較早時(shí)可以寫成HEAD~100。 #版本回退 $ git reset --hard HEAD^ #取消回退,commitId為你想要回到的未來(lái)版本號(hào) $ git reset --hard commitId撤銷修改
命令git checkout ——file 把文件在工作區(qū)的修改全部撤銷,這里有兩種情況:
* 一種是file修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài); * 一種是file已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
#文件在工作區(qū)的修改全部撤銷 $ git checkout --file刪除文件
命令git rm用于從版本庫(kù)刪除一個(gè)文件。
如果一個(gè)文件已經(jīng)被提交到版本庫(kù),那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會(huì)丟失最近一次提交后你修改的內(nèi)容。
#從版本庫(kù)刪除一個(gè)文件 $ git rm file
提示:先手動(dòng)刪除文件,然后使用git rm添加遠(yuǎn)程倉(cāng)庫(kù)和git add 效果是一樣的。
#關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù) $ git remote add origin #第一次將本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程庫(kù)上 $ git push -u origin master [-f] #此后,每次本地提交后,就可以使用命令推送最新修改 $ git push origin master從遠(yuǎn)程庫(kù)克隆
# git clone [url]
比如,要克隆 Ruby 語(yǔ)言的 Git 代碼倉(cāng)庫(kù) Grit,可以用下面的命令:
#這會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為grit的目錄,其中包含一個(gè).git的目錄,用于保存下載下來(lái)的所有版本記錄,然后從中取出最新版本的文件拷貝。如果進(jìn)入這個(gè)新建的grit目錄,你會(huì)看到項(xiàng)目中的所有文件已經(jīng)在里邊了,準(zhǔn)備好后續(xù)的開發(fā)和使用。 $ git clone git://github.com/schacon/grit.git
如果希望在克隆的時(shí)候,自己定義要新建的項(xiàng)目目錄名稱,可以在上面的命令末尾指定新的名字:
#唯一的差別就是,現(xiàn)在新建的目錄成了mygrit,其他的都和上邊的一樣。 $ git clone git://github.com/schacon/grit.git mygrit分支管理
創(chuàng)建+切換分支:
$ git checkout -b
創(chuàng)建分支:
$ git branch
切換分支
$ git checkout
查看分支:
#git branch命令會(huì)列出所有分支,當(dāng)前分支前面會(huì)標(biāo)一個(gè)*號(hào)。 $ git branch
切換分支
#切換回master分支 $ git checkout
合并某分支到當(dāng)前分支
$ git merge
刪除分支
$ git branch -d
Git分支十分強(qiáng)大,在團(tuán)隊(duì)開發(fā)中應(yīng)該充分應(yīng)用。
合并分支時(shí),加上—no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來(lái)曾經(jīng)做過(guò)合并,而fast forward合并就看不出來(lái)曾經(jīng)做過(guò)合并。
儲(chǔ)藏可以獲取你工作目錄的中間狀態(tài)——也就是你修改過(guò)的被追蹤的文件和暫存的變更——并將它保存到一個(gè)未完結(jié)變更的堆棧中,隨時(shí)可以重新應(yīng)用。
現(xiàn)在你想切換分支,但是你還不想提交你正在進(jìn)行中的工作;所以你儲(chǔ)藏這些變更。為了往堆棧推送一個(gè)新的儲(chǔ)藏,只要運(yùn)行g(shù)it stash。把所有未提交的修改(包括暫存的和非暫存的)都保存起來(lái),用于后續(xù)恢復(fù)當(dāng)前工作目錄。
git stash
需要說(shuō)明一點(diǎn),stash是本地的,不會(huì)通過(guò)git push命令上傳到git server上。
查看現(xiàn)有的所有儲(chǔ)藏,此命令顯然暗示了git stash可以多次保存工作進(jìn)度,并用在恢復(fù)時(shí)候選擇。
$ git stash list
重新應(yīng)用已經(jīng)實(shí)施的儲(chǔ)藏(不刪除儲(chǔ)藏)
#如果你想應(yīng)用更早的儲(chǔ)藏,你可以通過(guò)名字指定它,像這樣:git stash apply stash@{2}。如果你不指明,Git 默認(rèn)使用最近的儲(chǔ)藏并嘗試應(yīng)用它 $ git stash apply [--index] []
重新應(yīng)用已經(jīng)實(shí)施的儲(chǔ)藏(刪除儲(chǔ)藏)
#如果不使用任何參數(shù),會(huì)恢復(fù)最新保存的工作進(jìn)度,并將恢復(fù)的工作進(jìn)度從存儲(chǔ)的工作進(jìn)度列表中清除。 #如果提供參數(shù)(來(lái)自git stash list顯示的列表),則從該 中恢復(fù)?;謴?fù)完畢也將從進(jìn)度列表中刪除 。 #選項(xiàng)--index除了恢復(fù)工作區(qū)的文件外,還嘗試恢復(fù)暫存區(qū)。 $ git stash pop [--index] [ ]
刪除一個(gè)存儲(chǔ)的進(jìn)度。(默認(rèn)刪除最新的進(jìn)度)
$ git stash drop []
清空當(dāng)前所有的stash
$ git stash clear
基于儲(chǔ)藏進(jìn)度創(chuàng)建分支。
$ git stash branch多人協(xié)作
查看遠(yuǎn)程庫(kù)的信息:
#或者用git remote -v 可顯示更詳細(xì)的信息 $ git remote
推送分支,該分支上的所有本地提交推送到遠(yuǎn)程庫(kù)
$ git push origin
從本地推送分支,如果推送失敗,先抓取遠(yuǎn)程的新提交:
$ git pull
推薦閱讀:
2019年前端面試題-01
2019年前端面試題-02
2019年前端面試題-03
2019年前端筆試題
我是Cloudy,年輕的前端攻城獅一枚,愛(ài)專研,愛(ài)技術(shù),愛(ài)分享。
個(gè)人筆記,整理不易,感謝閱讀、點(diǎn)贊和收藏。
文章有任何問(wèn)題歡迎大家指出,也歡迎大家一起交流前端各種問(wèn)題!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104554.html
摘要:使用此命令能看到那些修改被暫存到了哪些沒(méi)有哪些文件沒(méi)有被到。需要說(shuō)明一點(diǎn),是本地的,不會(huì)通過(guò)命令上傳到上。查看現(xiàn)有的所有儲(chǔ)藏,此命令顯然暗示了可以多次保存工作進(jìn)度,并用在恢復(fù)時(shí)候選擇。 Git 版本庫(kù)原理 Git的版本庫(kù)里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。...
摘要:工作區(qū)狀態(tài)被改變,用這查看修改內(nèi)容。添加文件到倉(cāng)庫(kù),分兩步使用命令,注意,可反復(fù)多次使用,添加多個(gè)文件。使用命令,完成。版本回退命令顯示從最近到最遠(yuǎn)的提交日志。要重返未來(lái),用查看命令歷史,以便確定要回到未來(lái)哪個(gè)版本。 創(chuàng)建版本庫(kù)mkdir learngit 創(chuàng)建learngit目錄cd learngit 進(jìn)入文件夾里pwd 查看目錄路徑git init 初始化倉(cāng)庫(kù)git add re....
摘要:自動(dòng)化打包上文章概述本文分為上下兩篇,上篇主要介紹一些常用的插件也是此次打包主要用的插件,而下篇主要以一個(gè)項(xiàng)目為例,從本地出合適的版本,壓縮合并到最后打成包,發(fā)送至指定目錄,做一個(gè)全面的演示。 gulp自動(dòng)化打包(上) 文章概述 本文分為上下兩篇,上篇主要介紹一些常用的gulp插件(也是此次打包主要用的gulp插件),而下篇主要以一個(gè)demo項(xiàng)目為例,從本地checkout出合適的g...
閱讀 5274·2021-10-13 09:39
閱讀 2041·2019-08-29 11:12
閱讀 1210·2019-08-28 18:16
閱讀 1928·2019-08-26 12:16
閱讀 1315·2019-08-26 12:13
閱讀 3052·2019-08-26 10:59
閱讀 2393·2019-08-23 18:27
閱讀 3063·2019-08-23 18:02