公司里邊用到了git代碼版本控制工具,之前曾經粗略的學習過,但是畢竟自己沒有應用場景,所以學的比較隨意,現在再次學習一下,并做下記錄。
本篇博文不再介紹git的安裝,假定各位已經安裝好了git。并且傾向于實戰,不再對git的原理進行啰嗦!
實戰Git
配置git
在使用git之前,需要配置一下git,使用以下命令
admin@localhost gitplay$ git config --global user.name "zhangyonghui"
admin@localhost gitplay$ git config --global user.email "1798916974@qq.com"
git倉庫
我們可以用git clone git倉庫地址
來克隆一個遠程倉庫到本地,也可以創建自己的本地git倉庫。下面我們就以創建自己的本地倉庫為例進行git的實戰。
我們創建一個名為mygit的文件夾作為我們的git倉庫
初始化倉庫
現在我們已經創建好倉庫了,可以開始嘗試使用git的一些功能了。
我們在mygit文件夾下創建三個文件,名為file1,file2,file3
給每個文件添加點內容
查看三個文件中的內容
此時可以用git status
查看一下當前git倉庫的狀態
我們用git add
命令將它們加入到緩存區(Index)中
用git diff --cached
查看緩存區
我們將三個文件提交到本地代碼倉庫中,-m 參數表示添加注釋
再次查看緩存區和倉庫狀態
分支和合并
重點來了,我們在平常的多人團隊開發中,分支和合并是肯定會用到的功能特性。Git的分支可以讓你在主線(master分支)之外進行代碼提交,同時又不會影響代碼庫主線。分支的作用體現在多人協作開發中,比如一個團隊開發軟件,你負責獨立的一個功能需要一個月的時間來完成,你就可以創建一個分支,只把該功能的代碼提交到這個分支,而其他同事仍然可以繼續使用主線開發,你每天的提交不會對他們造成任何影響。當你完成功能后,測試通過再把你的功能分支合并到主線。
首先來實戰分支
用git branch
查看目前的所有分支,發現只有一個master,這是git默認自帶的主分支
我們創建一個分支,名為zyh,這是我姓名的簡寫
我們發現zyh分支已經創建成功了,星號標識了你當前處于哪個分支下,很顯然我們現在在master分支下面。我們可以用git checkout 分支名
來切換分支
現在我們來演示一下合并,我們在主分支master分支下進行修改內容,在zyh分支下也修改內容,最后我們把zyh分支的內容合并到master分支上,即最后master分支上會包含zyh分支上的修改內容。
我們在master分支下給file1文件添加內容"master update file1"
我們在zyh分支下首先查看file1,發現zyh分支下的file1的內容還是"test",并沒有受到master分支修改的影響,所以可以驗證我們在不同分支下的修改不會影響其它人。
我們在zyh分支下給file2添加"zyh update file2"
我們發現master和zyh分別修改了不同的文件,所以在合并的時候并不會出現合并沖突的情況。那么我們現在切換到master分支,將zyh分支合并到master分支上。
我們現在發現master分支下的file2內容已經由"test"變成了zyh分支下file2的內容。
再看一下如果我們的master分支和zyh分支同時修改了file3,在合并的時候會發生什么情況。
發現出現了沖突,可以看到沖突的內容都被添加到了file3中,我們使用vim編輯這個文件,去掉git自動產生標志沖突的<<<<<<等符號后,根據需要只保留我們需要的內容后保存,然后使用git add file3和git commit命令來提交合并后的file3內容,這個過程是手動解決沖突的流程。
撤銷一個合并
比如剛才我們的file3合并的時候發生了沖突,如何才能讓它變成合并之前的樣子呢?用git reset --hard HEAD^
就可以了,撤銷后發現file3還是原來的內容。
查看git的提交日志,用git log
命令
其他命令:
git pull
從遠端倉庫拉取到本地,一般是為了更新本地的代碼庫,以至于和遠端倉庫代碼保持一致。
git push
用于將自己的代碼推送給遠端代碼庫。