一.git版本控制原理####
master(主分支), develop(分支),雖然是主分支和分支崖堤,卻是平級關(guān)系,develop可以理解為開發(fā)庫,master為生產(chǎn)庫暑脆。
本地版本:master, develop
**GitHub上: master, develop **
1.gitHub上master版本拉取代碼到本地master维咸。
2.本地創(chuàng)建develop(分支)剂买,在分支里開發(fā)惠爽。
3.修改本地開發(fā)代碼后提交,提交到本地master(主分支)瞬哼。
4.本地代碼提交到GitHub上的Develop分支婚肆。
5.要出新版本或測試沒什么問題后才提交到GitHub的master(主分支)。
注意:多人開發(fā)的情況下坐慰,都提交代碼到gitHub的develop(分支)较性,從gitHub的develop(分支)拉去代碼到本地的develop(分支),再進(jìn)行開發(fā)和代碼合并结胀,所有都沒問題的時(shí)候才合并的gitHub的master(主分支)赞咙,生成版本。
以上都是個(gè)人理解糟港,如有異議攀操,歡迎討論學(xué)習(xí)
郵箱:jiang_yongchang@126.com
二.gitHub上創(chuàng)建項(xiàng)目####
獲取到項(xiàng)目地址:
三.上傳本地代碼到GitHub####
提供兩種方法:
1.方法一:
在Mac的終端上cd到上傳代碼的.git目錄(要上傳的代碼必須有.git隱藏文件,Xcode創(chuàng)建工程的時(shí)候勾選的秸抚,默認(rèn)就創(chuàng)建)
上傳代碼如下:
git init
git add . // add后 空格 加 點(diǎn)
git commit -m "first commit"
git remote add origin https://github.com/jiangyongchang126/hah.git
git push -u origin master
2.方法二:(推薦使用方法速和,下面也是按照這個(gè)方法)
①.在終端上cd到要存放的本地代碼目錄,
例如:cd /Users/jiangyongchang/work
②. 克隆GitHub的代碼到本地
git clone https://github.com/jiangyongchang126/MD5_RSA_AES_BASE64.git
現(xiàn)在在本地的/Users/jiangyongchang/work下已經(jīng)有了MD5_RSA_AES_BASE64目錄耸别,打開目錄看到:
README.md就是項(xiàng)目簡介健芭,GitHub上創(chuàng)建了才有
.gitignore 是上傳git的忽略文件,比如cocopods導(dǎo)入的類庫不上傳等...
.git文件是鏈接本地和GitHub的橋梁秀姐,不能覆蓋(下面會用到)
把要上傳的代碼copy到MD5_RSA_AES_BASE64下茎芭,.git 文件不用拷貝,.DS_Store文件也不能capy
③.把添加代碼后的工程提交代GitHub master(本地master到GitHub master)
終端cd到本地庫.git隱藏文件目錄
git branch // 看到分支情況定躏,默認(rèn)是只有master
git status // 看當(dāng)前分支的狀態(tài)
git add --all // 初始化時(shí)添加全部贯涎,平常提交代碼是 git add+提交的文 件名 例如提交podfile文件:git add podfile
git commit -m 'first' //添加成功后提交 first是提交的注釋
git push origin master:master // 提交本地代碼到GitHub,origin相當(dāng)于網(wǎng)路蠢沿,master:master就是本地master推到GitHub master
例如:// git push origin master:develop // 把本地master推到遠(yuǎn)程develop
** 看到分支情況伸头,默認(rèn)是只有master**
** 當(dāng)前分支狀態(tài),紅色文件為需要add的文件**
** add 后再看那些文件狀態(tài)變綠色**
** 提交**
提交代碼到GitHub master
此時(shí)舷蟀,刷新GitHub恤磷,代碼已上傳
四.develop master版本控制####
下面展開版本控制:終端的路徑一致不變.git目錄
版本控制時(shí),可以邊操作邊打開GitHub的客戶端對比野宜,當(dāng)創(chuàng)建分支develop時(shí)扫步,客戶端上就會多一個(gè)分支develop(還沒合并所有事空的),當(dāng)把master的代碼合并到develop時(shí)匈子,客戶端上的develop分支才有代碼河胎! 參照學(xué)習(xí)更加明顯,在終端里面有時(shí)候顯示的不明確虎敦。
1.創(chuàng)建本地分支develop
git branch develop
現(xiàn)在 git branch一下發(fā)現(xiàn)有兩個(gè)多了一個(gè)develop分支游岳,且當(dāng)前分支為master
2.把本地master的代碼merge(合并)到develop
git checkout develop // 切換當(dāng)前分支為develop
git merge master // 把master分支的代碼合并到當(dāng)前分支(develop)
致此政敢,代碼以合并到了develop,并且當(dāng)前分支為develop
3.merge(合并)代碼到GitHUP develop(分支)
git push origin master:develop // GitHub上并沒有develop分支胚迫,執(zhí)行這句命令后會自動創(chuàng)建一個(gè)GitHub develop分支
相應(yīng)的GitHub上也出現(xiàn)了develop分支
4.到此喷户,本地develop、master和GitHub上develop晌区、master都一致啦摩骨!
重點(diǎn)來啦,怎么使用剛剛創(chuàng)建好的那些個(gè)develop朗若、master恼五?再創(chuàng)建一個(gè)本地分支develop1來模擬多人開發(fā)情況,本地的develope分支和develop1分支分別修改代碼,然后提交到GitHub的develop分支哭懈,提交灾馒、拉去、沖突就能模擬多人開發(fā)環(huán)境了:
①.開發(fā)就用本地develop分支:查看分支狀態(tài)遣总,如果在master就切換當(dāng)前分支到develop睬罗,
git checkout develop
打開Xcode寫代碼,之后把代碼提交到本地develop旭斥,
git branch
git status
git add podfile MD5/EncryptionMD5.m MD5.xcodeproj/project.pbxproj
git commit -m '修改了podfile,viewcontrller'
在develop分支下寫的代碼就會改變容达,而master和develop1中的不變,切換不同的分支,然后重新打開Xcode后發(fā)現(xiàn)確實(shí)如此垂券! GitHub Desktop軟件上也一致花盐。
②.本地develop分支代碼推到GitHub的develop分支。
// 應(yīng)該先拉取 然后再推上去菇爪,
git pull origin develop:develop // 拉取到本地develop并合并算芯,如果有沖突這個(gè)方法就不能用了,被拒絕拉鹊手妗(下面的develop1分支會介紹另一種拉取方式)
git push origin develop:develop // 第一個(gè)develop是本地的熙揍,第二個(gè)是GitHub上的
看下GitHub上的master和develop確實(shí)有變動
③.OK,切換到develop1分支然后修改代碼氏涩,拉取届囚,提交
git checkout develop1
git branch
git status
git add podfile
git commit -m '修改了podfile,添加了AFNetWorking'
現(xiàn)在GitHub上develop分支的podfile文件是 pod 'SDWebImage',但是本地develop1分支的podfile文件是 pod 'AFNetWorking',會產(chǎn)生沖突是尖。
先拉取GitHub的develop分支到本地develop1奖亚,合并后再提交本地develop1到GitHub的develop分支。
git pull origin develop:develop1
rejected 被拒絕了析砸,因?yàn)橛袥_突。
現(xiàn)在換一種方法:
git fetch origin develop //更新GitHub的develop分支到當(dāng)前本地分支(develop1)
git log -p develop1..origin/develop // 比較本地分支(develop1)和GitHub的develop分支的差別
git merge origin/develop // 合并沖突爆袍。
git status // 查看develop1分支的狀態(tài)
vim podfile // 打開podfile文件
git add pod file
git commit -m '解決沖突'
git push origin develop1:develop // 將本地develop1合并到GitHub的develop
podfile 文件有沖突
④.切換本地分支到develop
git checkout develop
git pull origin develop:develop // 更新本地develop分支的代碼首繁,如果遇到?jīng)_突作郭,解決方法參考③里面的。
目前來說弦疮,本地的develop夹攒、develop1和GitHub的develop分支保持一致啦,假設(shè)測試庫的代碼都已經(jīng)測試通過了胁塞,要發(fā)版本咏尝!
⑤.合并代碼到本地主master,合并代碼到GitHub的master主分支
git checkout master // 切換到本地master主分支
git merge develop // 合并本地develop分支到本地master主分支啸罢。
git push origin master:master // 合并本地master主分支到GitHub的master主分支编检。
⑥.發(fā)布版本。
五.參考的文章####
$ git pull
$ git push
$ git fetch
$ fetch與push的區(qū)別
加密的demo集成了MD5扰才、RSA允懂、AES、Base64:MD5_RSA_AES_BASE64下載