博客更新:tengfeios.com
介紹一些關(guān)于git的基本操作
git的基本操作
最開始需要一個(gè)讓git關(guān)聯(lián)一個(gè)文件見,可以使用git init命令
git init
在當(dāng)前目錄下創(chuàng)建.git文件夾错森,使當(dāng)前文件夾成為git倉庫
現(xiàn)在本地有一個(gè)git倉庫了刹淌,就可以告訴git暑认,我想提交的文件有哪些,可以使用git add命令
git add 文件名
把文件放入暫存區(qū),為建立歷史作準(zhǔn)備
執(zhí)行 git add之后,git已經(jīng)知道性含,我們要提交的文件有哪些了,那么現(xiàn)在可以使用git commit命令提交了
git commit
提交暫存區(qū)的所有文件鸳惯,使文件成為一條git記錄商蕴。執(zhí)行g(shù)it commit命令默認(rèn)進(jìn)入vim界面,我們在vim里面輸入提交的備注芝发,使用:wq就可以提交成功了绪商。
執(zhí)行g(shù)it log
git log
顯示提交歷史
git 分支
什么是分支
在我們的開發(fā)工作中,可能要同時(shí)處理多個(gè)需求辅鲸。那么每個(gè)需求和每個(gè)需求都是沒有關(guān)系的格郁,但是他們都是同一個(gè)項(xiàng)目的需求。
傳統(tǒng)的工作方式,在同一份代碼中去開發(fā)很多新需求理张,新代碼的穩(wěn)定性是最差的赫蛇,會(huì)出現(xiàn)測試?yán)щy,開發(fā)不好定位等一些問題雾叭。
git 分支可以解決這個(gè)問題悟耘,我們在當(dāng)前主分支上開辟一個(gè)新的分支,繼續(xù)git commit织狐,后面的提交歷史不會(huì)影響主分支暂幼。最后我們這個(gè)分支的需求通過測試以后合入主干。
也有公司移迫,有這樣的場景旺嬉,他們的項(xiàng)目要出一個(gè)新版本,比如2.0版本厨埋,但是1.0還要繼續(xù)維護(hù)邪媳。這個(gè)時(shí)候,可以分別給每一個(gè)版本都建立一個(gè)分支荡陷。這樣子雨效,1.0版本分支上可以修復(fù)一些bug,但是他沒有2.0的新特性废赞。
不同的公司對于git分支的使用有不同的規(guī)范徽龟。
總而言之,分支的出現(xiàn)是為了分離提交的唉地。新的一個(gè)開發(fā)方向可以考慮創(chuàng)建一個(gè)分支据悔。新分支穩(wěn)定后合入主干。
現(xiàn)在我們?nèi)?chuàng)建一個(gè)分支
git branch 分支名
創(chuàng)建一個(gè)新的分支耘沼,新分支與老分支的提交記錄是一樣的极颓。
創(chuàng)建完畢后,我們可以使用git checkout命令切換到新的分支
git checkout 分支名
切換分支
切換到新分支之后就可以進(jìn)行新的提交了耕拷。
新的分支功能穩(wěn)定后讼昆,就可以使用git merge命令把新分支合并到主分支上面去了。
git merge
在主分支執(zhí)行g(shù)it merge 要合并的分支名骚烧,完成合并
遠(yuǎn)程倉庫
我們以前的所有操作都是在本地倉庫進(jìn)行的,一般項(xiàng)目會(huì)有多人協(xié)作開發(fā)闰围。我們把本地的修改更新遠(yuǎn)程倉庫赃绊。這樣就可以把代碼共享給同事。
首先我們添加一個(gè)遠(yuǎn)程倉庫
git remote add 遠(yuǎn)程倉庫名 遠(yuǎn)程倉庫鏈接羡榴。
遠(yuǎn)程倉庫名碧查,可以隨便寫,一般是origin。
git remote
git remote
獲取所有遠(yuǎn)程倉庫忠售,使用git remote -v 可以獲遠(yuǎn)程倉庫鏈接git remote add 遠(yuǎn)程倉庫名 遠(yuǎn)程倉庫鏈接
添加一個(gè)git遠(yuǎn)程倉庫传惠,可添加多個(gè)遠(yuǎn)程倉庫git remote rm 遠(yuǎn)程倉庫名
刪除一個(gè)遠(yuǎn)程倉庫
現(xiàn)在就可以使用git push向遠(yuǎn)程倉庫更新代碼啦。
git push 遠(yuǎn)程倉庫名 遠(yuǎn)程倉庫分支名
把當(dāng)前本地分支推入遠(yuǎn)程倉庫稻扬。
如果沒有遠(yuǎn)程倉庫卦方,可以使用github,碼云之類的網(wǎng)站創(chuàng)建一個(gè)泰佳。
在我們執(zhí)行g(shù)it push向服務(wù)器推代碼的時(shí)候盼砍,別人可能也在git push,我們需要通過git pull更新其他人的代碼逝她。
git pull 遠(yuǎn)程倉庫 遠(yuǎn)程倉庫分支
把遠(yuǎn)程倉庫的分支下載到本地浇坐,并將遠(yuǎn)程分支與當(dāng)前分支合并。
git沖突
實(shí)際開發(fā)過程中會(huì)產(chǎn)生一個(gè)經(jīng)常遇到的問題黔宛。
如果其他人的提交和我們的提交同時(shí)修改了同一個(gè)文件近刘,那么git merge會(huì)怎樣合并呢?
我們可以嘗試一下臀晃。
在兩個(gè)不同的分支跌宛,修改同一個(gè)文件,分別提交积仗。
執(zhí)行g(shù)it merge 分支名疆拘,合并分支
提示:
Auto-merging 沖突的文件名
CONFLICT (content): Merge conflict in 沖突的文件名
Automatic merge failed; fix conflicts and then commit the result
意思是自動(dòng)合并分支失敗,存在沖突寂曹。
現(xiàn)在git需要我們解決沖突哎迄,我們?nèi)ソ鉀Q一下沖突的問題。
打開沖突的文件名隆圆,會(huì)發(fā)現(xiàn)沖突的代碼塊被git修改過漱挚,大概如下
<<<<<<< HEAD
23
=======
32
>>>>>>> Dev
第一行代表沖突開始,HEAD表示當(dāng)前分支
Dev表示要合并的分支
=======將分支的修改進(jìn)行隔離
現(xiàn)在我們就知道如何修改沖突了渺氧,編輯此文件旨涝,把沖突的內(nèi)容修改為理想的狀態(tài),
執(zhí)行g(shù)it add . 告訴git侣背,我們已經(jīng)解決沖突白华。
執(zhí)行g(shù)it commit,就可以成功合入分支了贩耐。
總結(jié)
通過以上的命令弧腥,可以完成日常的開發(fā)任務(wù)了。但是git作為常用的版本管理工具潮太,還有很多需要掌握的內(nèi)容管搪。下一篇介紹git進(jìn)階的一些命令虾攻。