在開發(fā)中舰蟆,很多公司一般都會用到git趣惠、svn狸棍、cvs等方式來管理代碼。使用平臺有很多味悄,比如github草戈、gitlab、碼云侍瑟、自己的服務(wù)器等唐片。
介紹
代碼版本管理工具
CVS代碼版本管理工具
- 解決了多個人協(xié)同開發(fā),代碼合并的問題丢习,從服務(wù)器更新代碼完成合并牵触,降低了排查問題的難度,每次提交都有記錄咐低;
- 新的問題:代碼在服務(wù)器上同時存儲了多個版本(完整)揽思,重復(fù)量過大,對服務(wù)器存儲空間要求大见擦。
SVN代碼版本管理工具
- 在實現(xiàn)CVS所有功能的基礎(chǔ)上钉汗,實現(xiàn)了差異化管理,讓服務(wù)的儲存空間不再出現(xiàn)重復(fù)的代碼鲤屡,極大的節(jié)省了服務(wù)器空間损痰。
git代碼版本管理工具
全稱:分布式版本控制系統(tǒng)。
git支持分布式部署酒来,可以有效卢未、高速的處理從很小到非常大的項目版本管理。分布式相比于集中式的最大區(qū)別在于開發(fā)者可以提交到本地堰汉,每個開發(fā)者通過克铝缮纭(git clone),在本地機器上拷貝一個完整的Git倉庫翘鸭。
- 相對于傳統(tǒng)的SVN管理工具滴铅,去服務(wù)器,沒有服務(wù)器的概念就乓,每個開發(fā)人員的本地倉庫既是開發(fā)端也是服務(wù)器汉匙,可以和另一個人完成代碼同步和版本管理
- 基于網(wǎng)絡(luò),突破了局域網(wǎng)的顯示生蚁,可以讓開發(fā)人員隨時隨地在任何時間辦公噩翠,可以通過廣域網(wǎng)完成代碼的同步和版本管理
- 基于本地,在沒有網(wǎng)絡(luò)的情況下守伸,可以讓代碼在自己的本地倉庫完成代碼的同步和版本的管理绎秒,將不同功能不同批次的代碼管理在不同的代碼
代碼版本管理平臺
- github:有私有和公共倉庫,私有倉庫一般收費
- gitlab:可以免費搭建私有倉庫尼摹,并且可以部署在自己的服務(wù)器
- 碼云:中國社區(qū)推出的基于git的代碼托管平臺
具體操作见芹。
1剂娄、注冊代碼管理平臺賬號
??????注冊github:
官網(wǎng):https://github.com/
??????注冊碼云:
官網(wǎng):https://gitee.com/
(以下操作一碼云為例)
2、安裝git
官方下載地址:https://git-scm.com/downloads
網(wǎng)盤鏈接:https://pan.baidu.com/s/1iKxNx_K6k5wH8Hy7DeFIoA 提取碼:7xp3
安裝步驟比較簡單玄呛,一路下一步阅懦。注意地方:安裝目錄
測試是否安裝好:右鍵可以看到如下圖所示
3、配置環(huán)境變量
找到安裝路徑:D:/Git/usr/bin
并在環(huán)境變量里面添加路徑:
我的電腦 --> 右鍵屬性 --> 高級環(huán)境設(shè)置 --> 環(huán)境變量 --> 系統(tǒng)變量 --> Path里面添加
4徘铝、配置遠程倉庫開發(fā)人員
在桌面打開終端輸入一下代碼:(三次回車)
ssh-keygen -t rsa -C "碼云賬號"
解釋:
????ssh-keygen:生成秘鑰文件的命令
????-t rsa:指定秘鑰的算法
????-C :添加開發(fā)人員身份
如果報不是內(nèi)部或外部命令耳胎,說明環(huán)境變量添加有問題。
(此時惕它,C:\Users\Administrator\下面會生成一個.ssh的文件怕午,里面是私鑰和密鑰,如下如所示淹魄。)
????然后打開C:\Users\Administrator.ssh\id_rsa.pub,復(fù)制其中的內(nèi)容郁惜,添加到遠程倉庫的SSH秘鑰列表
步驟:
1.右上角下拉箭頭,找到設(shè)置甲锡,點擊進入
2.左列在安全設(shè)置下面點擊SSH公鑰
3.然后添加標題兆蕉,添加公鑰,點擊確定即可
如果是注冊的是github缤沦,前面步驟基本一樣虎韵,這里步驟在github網(wǎng)站,右上角-->setting --->New SSH key-->SSH keys->添加公鑰
5缸废、git本地和遠程倉庫的交互
1.本地創(chuàng)建一個文件夾:作為本地倉庫
2.進入文件夾包蓝,鼠標右擊,使用git bash here 打開企量,使用git工具管理文件夾
3.配置git用戶养晋,執(zhí)行命令配置
git config --global user.name "起一個名字"
git config --global user.email "碼云賬戶"
解釋:
?????????--global參數(shù),用例參數(shù)梁钾,表示這臺機器所有的git倉庫都會使用這個配置
#查看自己的配置信息
git config --list
4.初始化倉庫
git init
執(zhí)行命令,初始化這個文件夾逊抡,轉(zhuǎn)換為本地倉庫姆泻。此時出現(xiàn)了一個隱藏文件.git,跟蹤管理版本庫的文件冒嫡,不要手動修改這個目錄里面的文件拇勃。
HTTP方式
5.將遠程倉庫關(guān)聯(lián)到本地倉庫,執(zhí)行命令,這里采用HTTP方式關(guān)聯(lián)孝凌。
git remote add origin https:地址
此地址是遠程倉庫的地址方咆,如下圖:
同步倉庫信息
就是將平臺上的文件拉取到本地文件夾內(nèi),實現(xiàn)平臺與本地同步蟀架,執(zhí)行如下代碼:
git pull --rebase origin master
6.現(xiàn)在來實現(xiàn)一下本地開發(fā)后將代碼推送到遠程平臺
在本地倉庫添加一個文件demo1.txt瓣赂,輸入一些內(nèi)容榆骚,保存;
此時在Git Base Here開發(fā)工具中輸入一下命令煌集,可以查看版本管理狀態(tài)
git status
7.將文件添加到暫存區(qū)
git add demo1.txt
8.將暫存區(qū)的新文件妓肢,提交到本地倉庫
git commit demo1.txt -m "基礎(chǔ)代碼1"
9.將本地倉庫中的數(shù)據(jù)推送遠程倉庫
git push origin master:master
解釋:git push <遠程主機名><本地分支名>:<遠程分支名>
【注意】在要求輸入用戶名和密碼的時候,輸入錯誤可能會導(dǎo)致下次不再彈出輸入用戶名和密碼的窗口苫纤,遇到此情況課通過以下代碼解決:
git config --system --unset credential.helper
解釋:
- 暫存區(qū):臨時存儲代碼的緩沖區(qū)域碉钠,暫存區(qū)的存在,是為例將非常頻繁的小改動統(tǒng)一存儲起來卷拘,等修改的代碼成型可以提交了喊废,再將暫存區(qū)的代碼提交到本地倉庫
- 本地倉庫:接受代碼版本管理的一個倉庫,方便開發(fā)人員在沒有網(wǎng)絡(luò)的情況下提交的數(shù)據(jù)依然接受版本管理
- 遠程倉庫:一個多人協(xié)同開發(fā)的公共倉庫栗弟,保持24小時在線污筷,在最大程度上讓所有開發(fā)人員在聯(lián)網(wǎng)的第一時間同步到最新代碼
SSH方式
采用SSH方式關(guān)聯(lián),將遠程倉庫關(guān)聯(lián)到本地倉庫
步驟:
1、在本地新建一個目錄
【注】由于上面配置git用戶時横腿,采用了--global颓屑,所以這里就不要再配置了。
2耿焊、初始化倉庫
git init
3揪惦、拉取遠程倉庫完整項目
git clone 遠程倉庫鏈接地址
這次鏈接地址需要選擇SSH,如下如:
4罗侯、拉取遠程項目后器腋,在本地倉庫新建demo2.txt
5、通過如下代碼查看版本管理狀態(tài)
git status
6钩杰、將文件添加到暫存區(qū)
git add demo2.txt
7纫塌、將暫存區(qū)的新文件,提交到本地倉庫
git commit demo2.txt -m "新增demo2"
8讲弄、將本地倉庫中的數(shù)據(jù)推送遠程倉庫
git push
此時只需要這一行代碼即可措左,也不需要輸入用戶名和密碼
分支創(chuàng)建即運用
- 創(chuàng)建分支
git branch 分之名
- 切換分支
git checkout 分支名
- 查看分支
git branch
- 在主分之下合并其他分支下的文件到主分支下
?git merge 分支名
- 刪除分支
?git branch -d dev
案例:
1、創(chuàng)建dev分支
git branch dev
2避除、切換到dev分支下怎披,并創(chuàng)建新文件或修改demo3.txt
git checkout dev
3、查看狀態(tài)
git status
4瓶摆、提交暫存區(qū)
git add demo3.txt
4凉逛、提交本地倉庫
git commit demo3.txt
5、切換回主分之
git checkout master
6群井、合并dev分支到master分支
git merge dev
7状飞、在主分之下推送到遠程倉庫
git push
8、刪除不需要的分支
git branch -d dev
9、強制刪除dev分支
git branch -D dev
【注意】在分支中添加修改文檔后诬辈,需要添加到暫存區(qū)提交到到本地倉庫酵使,才會出現(xiàn)主分之和其他分支內(nèi)部文件的差異。
版本回滾
在開發(fā)過程中自晰,出現(xiàn)了代碼問題凝化,新提交的代碼導(dǎo)致項目崩潰,git可以讓代碼回滾到上一個正常的狀態(tài)酬荞。
- 差異排查
git diff
解釋:
如:-1,2 +1,4
修改前:從第一行開始搓劫,有兩行發(fā)生變動
修改后:從第一行開始,有四行添加
- 查看提交歷史日志
git reflog/log
reflog :簡要信息
log : 詳細信息
- 版本回滾
將先做版本回滾到9473dc93 這個版本
git reset --hard 9473dc93
回退到此版本后混巧,在此版本之后做的任何操作都會失效
版本沖突
什么是版本沖突
本地倉庫有待提交的數(shù)據(jù)枪向,和服務(wù)器上的數(shù)據(jù)不一致。
例如:A和B同時開發(fā)咧党,都pull遠程倉庫的代碼秘蛔,A修改了demo1.py,提交并推送成功傍衡,B也修改了demo1.py深员,提交并推送,發(fā)現(xiàn)失敗蛙埂,產(chǎn)生了版本沖突倦畅,原因是推送前沒有更新
原則:先更新,再提交绣的,推送前先git pull獲取最新代碼叠赐,在合并,最后push提交
一旦發(fā)生沖突屡江,需要手工合并芭概,git用<<<<<<,=======,>>>>>>標記出不同分支的內(nèi)容,我們修改后再提交本地數(shù)據(jù)惩嘉。
制造沖突
git branch dev
git checkout dev
#在dev分支下修改1.txt 添加一行this is branch dev change
git add 1.txt
git commit 1.txt -m "branch dev change"
git checkout master
#在master分支下修改1.txt 添加一行this is master change
git add 1.txt
git commit 1.txt -m "master change"
git merge dev
此時查看1.txt罢洲,內(nèi)容如下
this is first demo
<<<<<<< HEAD
this is master change
=======
this is branch dev change
>>>>>>> dev
沖突處理:
通過手動修改哪些留哪些去除
<1.txt修改后內(nèi)容為>
this is first demo
this is master change
this is branch dev change
然后依次執(zhí)行如下代碼
git add 1.txt
git commit 1.txt -m "finall change"
git checkout master
git push origin master:master
【注意】以上合并發(fā)生沖突后,狀態(tài)一直處于合并狀態(tài)文黎,在添加到本地倉庫后奏路,需要竟分支切換到推送文件夾下,才能進行推送臊诊。
Pycharm使用git
打開pycharm,選擇環(huán)境變量:
file-->setting-->version control-->git-->Path to git
填入:c:\program files\git\cmd\git.exe
1斜脂、菜單欄vcs-->get from viersion control-->version control:git-->URL:碼云clone地址-->選擇一個本地倉庫
2抓艳、新建demo4.py-->寫入代碼,右擊-->git-->add-->commit file-->填寫描述帚戳,然后commit-->repository-->push