git工具的使用方法以及与snv的区别
給大家推薦一個(gè)廖雪峰老師講解git的網(wǎng)站:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
一、SVN與git的區(qū)別?
SVN是“集成式”管理方式,所有的“版本控制器”都在中央服務(wù)器上,每個(gè)開(kāi)發(fā)人員的的計(jì)算機(jī)都要連接到中央服務(wù)器上才能進(jìn)行合作開(kāi)發(fā)。開(kāi)發(fā)人員一般只能在公司才能進(jìn)行開(kāi)發(fā)(因?yàn)橹醒敕?wù)器在公司),局限性較大。?git是“分布式“管理方式,開(kāi)放人員的每臺(tái)計(jì)算機(jī)上都有一個(gè)“版本控制器”,每個(gè)開(kāi)發(fā)人員把自己開(kāi)發(fā)的模塊的代碼都上傳到github上(充當(dāng)一個(gè)遠(yuǎn)程倉(cāng)庫(kù),類似與“中轉(zhuǎn)站”的作用),其他人可以從github上下載相應(yīng)的代碼進(jìn)行開(kāi)發(fā)。git方式不需要中央服務(wù)器,開(kāi)發(fā)人員可以做到“隨時(shí)隨地”的開(kāi)發(fā)。(因?yàn)間ithub是一個(gè)公用的平臺(tái),只要在有網(wǎng)的地方,就可以登陸去下載相應(yīng)的代碼版本)。
二、git工具的安裝?
1.打開(kāi)github的網(wǎng)站?https://github.com/?,登陸github(如果沒(méi)有g(shù)ithub賬號(hào)的話,要先去注冊(cè)一個(gè),注意:郵箱和設(shè)置的用戶名盡量是自己經(jīng)常用的,而且用戶名不要太復(fù)雜,因?yàn)樵趃it命令里面會(huì)用到)。?
2.創(chuàng)建一個(gè)”倉(cāng)庫(kù)(create repositories)“,給倉(cāng)庫(kù)起一個(gè)名字,比如”drag“(一般名字和自己項(xiàng)目的功能有關(guān),盡量做到”見(jiàn)名知義“)。?
3.可以”勾選上“ Readme,(也可以不勾選),這是對(duì)你創(chuàng)建的項(xiàng)目的一個(gè)簡(jiǎn)單介紹。?
4.把自己創(chuàng)建的項(xiàng)目(比如上面的drag)從github上,下載到本地,以便在本地進(jìn)行開(kāi)發(fā)。通過(guò)以下的命令進(jìn)行實(shí)現(xiàn):?
假如你想把你的項(xiàng)目放在E盤的myProjects文件夾下:?
cd E: (按回車)?
cd myProjects git clone url (按回車,這里的url是你在github上創(chuàng)建項(xiàng)目時(shí),自動(dòng)生成的一個(gè)網(wǎng)址,在github上可以找到。)?
這個(gè)命令執(zhí)行完畢后在myProjects文件夾下會(huì)有一個(gè)drag文件夾,一個(gè)readme文件(或許沒(méi)有)?
5.設(shè)置”貢獻(xiàn)者“,貢獻(xiàn)者就是指參與該項(xiàng)目開(kāi)發(fā)的人(在開(kāi)發(fā)工程中,如果你對(duì)代碼進(jìn)行了修改,別人能夠查看你做了哪些修改),設(shè)置貢獻(xiàn)者的git命令如下:?
git config –global user.name “注冊(cè)時(shí)起的用戶名”?
git config –global user.email “注冊(cè)時(shí)的郵箱”?
貢獻(xiàn)者設(shè)置完成后,可以通過(guò)git config –global uer.name 命令查看設(shè)置的用戶名,git config –global user.email 查看設(shè)置的郵箱。
三、git的主分支和三個(gè)區(qū)的介紹?
1.主分支master:主分支一般是開(kāi)發(fā)過(guò)程中”穩(wěn)定“一個(gè)部分,為了防止在開(kāi)發(fā)過(guò)程中出現(xiàn)意外把”主分支“破壞掉。一般會(huì)另開(kāi)一個(gè)”分支“(非主分支,比如起名next),在next分支上進(jìn)行開(kāi)發(fā),開(kāi)發(fā)完成后,再合并到主分支master上。?
2.git的三個(gè)區(qū):工作區(qū)、暫存區(qū)、版本區(qū)。?
工作區(qū):drag文件夾下的所有文件?
暫存區(qū)的左用:?
(1).作為過(guò)渡層?
(2).避免誤操作?
(3).保護(hù)工作區(qū)和版本區(qū) (內(nèi)容丟失后,可以從”暫存區(qū)“找回)?
(4).分支處理 (比如:把正在進(jìn)行開(kāi)發(fā)的分支上的內(nèi)容暫時(shí)放到”暫存區(qū)“,去修改其他分支上的bug)?
版本區(qū):主分支”master”?
三個(gè)區(qū)之間的聯(lián)系:一般是在”工作區(qū)“進(jìn)行開(kāi)發(fā),然后提交到”暫存區(qū)“,再有”暫存區(qū)“提交到“版本區(qū)”?
工作區(qū)——>暫存區(qū)———->版本去?
四、git工具的常用命令?
1.git status 查看“工作區(qū)”和“暫存區(qū)”的狀態(tài)?
2.git add filename 把文件從“工作區(qū)”添加到“暫存區(qū)” (工作區(qū)中還有該文件)?
3.git add . 把工作區(qū)下的所有文件都添加到暫存區(qū)?
4.git commit filename 把文件從“暫存區(qū)”提交到“版本區(qū)”?
5.git commit 把暫存區(qū)中的所有文件都提交到“”版本區(qū) 會(huì)彈出一個(gè)記事本,讓我們添加注釋?
6.git commit -m “自己寫的一些注釋” 我們直接添加注釋,這樣不會(huì)彈出一個(gè)記事本去添加注釋?
7.git reset HEAD filename 把文件從“暫存區(qū)”撤回到“工作區(qū)”?
8.git commit -a -m “自己寫的注釋” 把文件從“工作區(qū)”直接提交到“版本區(qū)”(本質(zhì)上沒(méi)有跳過(guò)暫存區(qū),-a其實(shí)就是添加到暫存區(qū))?
正常的流程是:工作區(qū)中的文件發(fā)生改變(git status命令可以查看)–>git add filename(填到暫存區(qū))–>git commit filename(提交到版本區(qū))–>git push origin master(把版本區(qū)中的文件同步到github上)–>刷新你的github賬戶就可以看到新添加的文件
五、對(duì)比命令(主要用來(lái)查看工作區(qū)、暫存區(qū)、版本區(qū)三個(gè)區(qū)之間的文件中的代碼有什么不同之處)?
1.git diff 查看工作區(qū)與暫存區(qū)文件之間的差異?
2.git diff –cached(或者–staged) 查看“暫存區(qū)”與“版本區(qū)”文件之間的差異?
3.git diff 分支名字 查看“工作區(qū)”與“版本區(qū)”文件之間的差異
六、撤銷命令?
1.git reset HEAD 文件名 將文件從“暫存區(qū)”撤回到“工作區(qū)”?
2.git checkout – 文件名 將“工作區(qū)”的文件撤銷回之前“版本區(qū)”的文件?
3.git commit –amend 如果有“誤提交”,想對(duì)提交重新操作(比如:有A,B兩個(gè)文件,把A提交了,而B(niǎo)沒(méi)有提交,我們想要的是A,B一起提交,此時(shí)就可以將B提交到暫存區(qū),然后用git commit –amend),此時(shí),A,B就能夠一起提交了
七、git的刪除命令?
//工作區(qū)的文件可以隨意的創(chuàng)建和刪除(就像平常在電腦上創(chuàng)建和刪除其他文件一樣)?
1.git rm 文件名 把暫存區(qū)的文件刪除(前提是:工作區(qū)沒(méi)有該文件,暫存區(qū)有該文件)?
2.git rm -f 文件名 當(dāng)“工作區(qū)”和”暫存區(qū)“都有某個(gè)文件時(shí),此命令會(huì)把”工作區(qū)“和”暫存區(qū)“的該文件都刪除?
3.git rm –cached 文件名 當(dāng)”工作區(qū)“和”暫存區(qū)“都有某個(gè)文件時(shí),此命令會(huì)把”暫存區(qū)“的該文件刪除,但是”工作區(qū)“的該文件不會(huì)被刪除,仍然存在
八、文件恢復(fù)命令?
1.git checkout id名 文件名 把”工作區(qū)“的某個(gè)文件刪除后,用該命令可以恢復(fù)回來(lái)?
2.git reset –hard id名 恢復(fù)整個(gè)版本的文件(文件也許有多個(gè))?
3.git reset –hard id名 HEAD^ 恢復(fù)到過(guò)去某一個(gè)版本的文件(可能有多個(gè)文件)?
4.git reset –hard HEAD~數(shù)字 恢復(fù)到過(guò)去的某一個(gè)版本的文件(當(dāng)數(shù)字為1的時(shí),其實(shí)就是上面的HEAD^)?
5.git reflog 執(zhí)行上面的3或者4命令后,又想回到現(xiàn)在的版本,可以此命令調(diào)出文件的多個(gè)版本的id,然后從中找到現(xiàn)在版本的id,然后再調(diào)用git reset –hard id名 命令恢復(fù)到現(xiàn)在這個(gè)版本
十、將本地文件同步到github的”遠(yuǎn)程倉(cāng)庫(kù)“上?
通過(guò)命令:git push 遠(yuǎn)程倉(cāng)庫(kù)名字 同步的分支名 將版本區(qū)中的文件同步到github的倉(cāng)庫(kù)中?
可以通過(guò)git remote 命令查看遠(yuǎn)程倉(cāng)庫(kù)的名義,默認(rèn)是 origin?
可以通過(guò) git remote -v 命令可以查看遠(yuǎn)程倉(cāng)庫(kù)的地址
十一、多人協(xié)作開(kāi)發(fā)下,解決沖突?
1.git fetch?
git diff master origin/master 查看遠(yuǎn)程和本地的不同?
git merge origin/master 發(fā)現(xiàn)不同后,手動(dòng)合并?
2.git pull (把遠(yuǎn)程倉(cāng)庫(kù)中的代碼拿下來(lái)和本地的代碼自動(dòng)合并)
十二、git下的分支(有利于多人協(xié)作開(kāi)發(fā))?
1.git branch 查看分支?
2.git branch new1 創(chuàng)建了一個(gè)新的分支new1?
3.git checkout new1 切換到new1分支下?
4 簡(jiǎn)寫:git checkout -b new2 創(chuàng)建并切換到new2分支下?
5.分支的合并:?
假如在new1分之下,有了新的修改(有了c5版本),如果想把master分支下的代碼也變成c5版本,需要進(jìn)行分支合并,方法如下:?
1.切換到master分支下:git checkout master?
2.用git merge new1 命令 這樣,master和new1分支就合并了,此時(shí),master分支的指針也指向了c5?
6. git branch –merged 查看已經(jīng)合并的分支?
7.git branch –no-merged 查看沒(méi)有合并的分支?
8. 一般來(lái)說(shuō),new1分支與master分支合并后,new1分支就沒(méi)用了,可以刪除掉new1分支了?
1.git branch -d new1 把合并后的new1分支刪除掉(如果new1分支沒(méi)有合并,用此命令是無(wú)法刪除的)?
2.git branch -D new2 強(qiáng)制把沒(méi)有合并的分支刪除?
9.當(dāng)不同分支下的代碼進(jìn)行合并時(shí),有可能會(huì)發(fā)生沖突(如:master分支與new1分支下的代碼合并)?
假如當(dāng)前在master分支下:?
1.合并 git merge new1?
2.有沖突提示,git status 能夠看到有沖突的分支?
3.把有沖突的文件手動(dòng)修改,修改完成后重新提交,git commit -a -m “注釋”?
10.將git 上的分支同步到github上?
git push 倉(cāng)庫(kù)名 分支名 比如: git push origin new1 把new1分支同步到github上
十三、github上的標(biāo)簽release,一般是指項(xiàng)目開(kāi)發(fā)完成后,給項(xiàng)目標(biāo)記的版本?
1.git tag 查看標(biāo)簽?
2.git tag v1.0 創(chuàng)建標(biāo)簽v1.0?
3.git push origin(倉(cāng)庫(kù)名) v1.0(標(biāo)簽名) 將v1.0標(biāo)簽同步到github上
十四、git工具上的常用輔助命令?
1. cd.. 返回上一級(jí)?
2. ls 查看文件下的目錄結(jié)構(gòu)?
3. mkdir hello 創(chuàng)建一個(gè)hello文件夾?
4. tab鍵 自動(dòng)補(bǔ)全git 命令?
5. git config –global alias co checkout 給checkout起一個(gè)別名co,之后可以用co來(lái)代替checkout?
6. enter 繼續(xù)查看沒(méi)有顯示出來(lái)的日志記錄(git log)?
7. q鍵 退出日志查看界面?
8. 工作區(qū):數(shù)字是紅色?
9. 暫存區(qū):數(shù)字是綠色?
10. ~:代表有修改?
11. !:代表有沖突
總結(jié)
以上是生活随笔為你收集整理的git工具的使用方法以及与snv的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 张宇数学基础30讲——数列极限---笔记
- 下一篇: Matlab模拟三个天体运动