分布式版本控制工具Git
一、Git技術(shù)簡介
Git是一個分布式版本控制系統(tǒng),與集中式的SVN不同。
?
?
1. 主要特點
集中式特點:
分布式特點:
?
二、Git環(huán)境搭建
?1.下載Git客戶端
https://git-scm.com/downloads
2.安裝Git客戶端
注釋:Git使用了cygwin在windows下模擬了unix環(huán)境,所以支持很多unix文件操作命令。
a)?將git客戶端下載后安裝在非中文目錄下。
b)?下載Git圖形化工具:smartGit
http://www.syntevo.com/static/smart/download/smartgit/smartgit-win32-setup-jre-17_0_5.zip
3.創(chuàng)建版本庫
解釋:所謂版本庫,就是本地的倉庫,本質(zhì)就是一個文件夾,只不過該文件夾會受到git的管理,每個文件的創(chuàng)建修改都能跟蹤
例如要將d盤下的work目錄中創(chuàng)建gitrepo目錄作為git倉庫文件夾。
?
倉庫創(chuàng)建好之后,會生成.git的目錄,.git的目錄,是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。默認是隱藏的。
?
三、Git的常用版本控制命令
1.?添加文件到版本庫
· 示例: 向版本倉庫中添加一個HelloGit.java文件。
· 注意事項:
① 版本控制器只能記錄文本文件的改動痕跡。
② 二進制文件只能記錄大小變化。
③ 文本文件必須使用UTF-8編碼
④ windows用戶不要使用系統(tǒng)自帶記事本編輯器。
· 操作:
1.1 在git的倉庫目錄或者子目錄中創(chuàng)建一個HelloGit.java文件。
1.2 使用 stage 操作將文件把文件交給git管理的暫存區(qū)【相當于數(shù)據(jù)庫的dml語句,將數(shù)據(jù)修改存放在rollback seagment回滾段,暫存區(qū)與當前客戶端對應(yīng)】
?
1.3 使用 commit 完成文件的提交【相當于數(shù)據(jù)庫的提交事務(wù),將暫存的內(nèi)容提交給git管理。】
?
使用commit提交文件需要設(shè)置?因為Git是分布式版本控制系統(tǒng),所以,每個機器都必須自報家門:你的名字和Email地址。
注意git config命令的--global參數(shù),用了這個參數(shù),表示你這臺機器上所有的Git倉庫都會使用這個配置
?
2.?版本管理機制
開發(fā)中會對代碼文件進行一次又一次修改,就好比我們打rpg游戲,每打敗一個boss就存檔一次,如果某次打boss失敗了,我們也可以利用存檔回退到之前的某個進度,不至于從頭開始。git也一樣,每次修改到一定程序,就要利用commit命令產(chǎn)生一個快照,日后一旦改錯了,也可以利用commit快照回退之前的某個快照時刻
① stage是將當前修改提交到暫存區(qū)。
② commit 才是一次性將暫存區(qū)的數(shù)據(jù)同步到倉庫。
?
③ 每次commit,其實就是對當前進度生成一個快照,就表示當前進度。
進度模型:
3.?版本管理
4.1 工作區(qū)修改撤銷
4.2 內(nèi)容已經(jīng)被提交到暫存區(qū)staged
如果需要將工作區(qū)的內(nèi)容頁撤銷掉,需要使用git checkout -- file。
4.3 內(nèi)容已經(jīng)commit到倉庫區(qū):使用版本回退。
①?使用git log命令查看文件的修改詳細歷史記錄。
② 跳到指定版本
③ 工作區(qū)文件撤銷和倉庫保持一致,需要對工作區(qū)文件撤銷操作。
4.4 刪除文件
ps:本質(zhì)也是提交修改,刪除也是一種修改。
① 刪除工作區(qū)的文件,然后再smartgit中提交修改。
?
四、遠程倉庫
1.?創(chuàng)建遠程倉庫
1.1 使用郵箱在第三放GitHub網(wǎng)站注冊一個賬號。
開源中國碼云:http://git.oschina.net/
1.2 創(chuàng)建遠程倉庫
注意:遠程倉庫和本地倉庫名必須一致,否則無法提交。
2.?綁定遠程倉庫
2.1 復(fù)制遠程倉庫的地址
?
2.2 在smartgit中添加遠程倉庫地址進行綁定。
?
2.3 先確保項目已經(jīng)commit。
2.4 點擊項目文件夾,然后點擊pull。將本地倉庫和遠程倉庫綁定。
?
2.5 將本地項目推送到遠程倉庫.
?
3.?從遠程倉庫克隆
注釋:最正確的工作流程是先創(chuàng)建遠程倉庫,然后克隆遠程倉庫
3.1:創(chuàng)建遠程倉庫
3.2:克隆遠程倉庫
git clone 遠程倉庫項目的地址
3.3 使用smart克隆clone遠程倉庫到本地
3.4 可以在克隆到本地的倉庫進行操作。
4.?git操作命令簡圖
| 說明: workspace:本地工作區(qū) Index/Staged:暫存區(qū) Repository:本地倉庫 Remote:遠程倉庫 |
?
五、分支管理
?
1.?概念
?
分支就好比是火影中的影分身之術(shù),比如你要同時完成學(xué)習(xí)Spring和Linux兩件事,你可以分身,然后一個分身花5天時間去學(xué)習(xí)Spring,另一個分身花5天學(xué)習(xí)Linux,這5天之內(nèi)各個分身互不干擾,5天之后分身合并,你就同時掌握了Spring和Linux兩種技術(shù)。
?
?
?
2. 作用
?
比如開發(fā)中,你有一個任務(wù)需要1個月完成,如果完成再提交,過程中有代碼丟失的風(fēng)險,但是完成之前就提交可能導(dǎo)致別人無法工作。通常來講,一個人使用一個分支。
?
?
?
3.?分支管理
?
ps:系統(tǒng)默認有一個主分支--master
?
?
?
3.1 查看目前所有的分支:git branch
?
3.2 創(chuàng)建分支:git branch 分支名
?
3.4 合并分支:
?
4.?解決沖突
ps:所謂沖突一般就是兩個人開發(fā)中在各自的分支中修改了同一個文件,并且要提交。
就好比你有兩個分身,都學(xué)習(xí)了做飯西紅柿炒雞蛋,一個放糖,一個放鹽,合并的時候必須把這個矛盾手動解決,
執(zhí)行合并是會出現(xiàn)上圖中的狀態(tài),需要兩個分支所對應(yīng)的人共同協(xié)商給出沖突解決結(jié)果,將文件修改之后,然后由其中一個人完成add和commit,然后再合并。
5.?遠程倉庫分支管理
5.1 將指定分支推送到遠程:git push origin 分支名
?
6.?分支管理策略
6.1 master分支,主分支,時刻與遠程倉庫保持一致。
6.2 dev分支,開發(fā)分支,涉及到多人協(xié)作,且保存這多人共同的開發(fā)進度。如果所有人的開發(fā)進度需要與遠程保持一致,則需要推送到遠程,否則本地也可以。
六、標簽管理
概念:tag其實就是對某個commit的快照添加個標記,快照雖然也有版本號,但是是一串32位的UUID很難記憶也不易于溝通,而換成標簽tag:v1.0 、v2.0這樣的標記就很容易記憶。比如“將master主分支上,v1.0標簽的項目打包發(fā)布”就比 “將master主分支上a732s8a89s88d...版本的項目打包發(fā)布”容易的多。
1.?創(chuàng)建標簽
切換到要添加標簽的分支上,找到對應(yīng)的版本,右鍵選擇Add Tag操作。
2.?管理標簽
2.1 查看所有標簽
?
2.2 刪除標簽
在標簽右鍵--->Delete即可。
2.3 把標簽推送到遠程倉庫
選中標簽--->右鍵-->push to
?
七、 Eclipse整合操作?
1. 創(chuàng)建項目分享到git遠程倉庫。?
2. 從git倉庫克隆項目?
3. 開發(fā)過程中的操作流程?
八、 常用的第三方在線Git倉庫?
轉(zhuǎn)載于:https://www.cnblogs.com/awzf/p/9957181.html
總結(jié)
以上是生活随笔為你收集整理的分布式版本控制工具Git的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用SQLALCHEMY 出现warni
- 下一篇: ethereum(以太坊)(七)--枚举