github的版本控制master和branch develop


一.git版本控制原理

master(主分支), develop(分支),雖然是主分支和分支,卻是平級關系,develop可以理解為開發庫,master為生產庫。

本地版本:master, develop GitHub上: master, develop

1.gitHub上master版本拉取代碼到本地master。 2.本地創建develop(分支),在分支里開發。 3.修改本地開發代碼后提交,提交到本地master(主分支)。 4.本地代碼提交到GitHub上的Develop分支。 5.要出新版本或測試沒什么問題后才提交到GitHub的master(主分支)。

注意:多人開發的情況下,都提交代碼到gitHub的develop(分支),從gitHub的develop(分支)拉去代碼到本地的develop(分支),再進行開發和代碼合並,所有都沒問題的時候才合並的gitHub的master(主分支),生成版本。

以上都是個人理解,如有異議,歡迎討論學習 郵箱:jiang_yongchang@126.com

二.gitHub上創建項目

Screen Shot 2016-06-20 at 5.04.38 PM.png

獲取到項目地址:

 

三.上傳本地代碼到GitHub

提供兩種方法: 1.方法一: 在Mac的終端上cd到上傳代碼的.git目錄(要上傳的代碼必須有.git隱藏文件,Xcode創建工程的時候勾選的,默認就創建)

Screen Shot 2016-06-20 at 5.38.44 PM.png

上傳代碼如下:

  1.  
    git init
  2.  
    git add . // add后 空格 加 點
  3.  
    git commit -m "first commit"
  4.  
    git remote add origin https://github.com/jiangyongchang126/hah.git
  5.  
    git push -u origin master

2.方法二:(推薦使用方法,下面也是按照這個方法)

①.在終端上cd到要存放的本地代碼目錄,
例如:cd /Users/jiangyongchang/work


Screen Shot 2016-06-20 at 5.46.56 PM.png

②. 克隆GitHub的代碼到本地

git clone https://github.com/jiangyongchang126/MD5_RSA_AES_BASE64.git

Screen Shot 2016-06-20 at 5.51.59 PM.png

現在在本地的/Users/jiangyongchang/work下已經有了MD5_RSA_AES_BASE64目錄,打開目錄看到:


Screen Shot 2016-06-20 at 5.55.04 PM.png

README.md就是項目簡介,GitHub上創建了才有
.gitignore 是上傳git的忽略文件,比如cocopods導入的類庫不上傳等...
.git文件是鏈接本地和GitHub的橋梁,不能覆蓋(下面會用到)

把要上傳的代碼copy到MD5_RSA_AES_BASE64下,.git 文件不用拷貝,.DS_Store文件也不能capy


Screen Shot 2016-06-20 at 6.06.29 PM.png


③.把添加代碼后的工程提交代GitHub master(本地master到GitHub master)

終端cd到本地庫.git隱藏文件目錄

  1.  
    git branch // 看到分支情況,默認是只有master
  2.  
    git status // 看當前分支的狀態
  3.  
    git add --all // 初始化時添加全部,平常提交代碼是 git add+提交的文 件名 例如提交podfile文件:git add podfile
  4.  
    git commit -m 'first' //添加成功后提交 first是提交的注釋
  5.  
    git push origin master:master // 提交本地代碼到GitHub,origin相當於網路,master:master就是本地master推到GitHub master
  6.  
    例如:// git push origin master:develop // 把本地master推到遠程develop

看到分支情況,默認是只有master


Screen Shot 2016-06-20 at 6.19.36 PM.png

當前分支狀態,紅色文件為需要add的文件


Screen Shot 2016-06-20 at 6.20.22 PM.png

add 后再看那些文件狀態變綠色


Screen Shot 2016-06-20 at 6.20.43 PM.png

提交


Screen Shot 2016-06-20 at 6.20.56 PM.png

提交代碼到GitHub master


Screen Shot 2016-06-20 at 6.21.10 PM.png

此時,刷新GitHub,代碼已上傳

四.develop master版本控制

下面展開版本控制:終端的路徑一致不變.git目錄

版本控制時,可以邊操作邊打開GitHub的客戶端對比,當創建分支develop時,客戶端上就會多一個分支develop(還沒合並所有事空的),當把master的代碼合並到develop時,客戶端上的develop分支才有代碼! 參照學習更加明顯,在終端里面有時候顯示的不明確。


Screen Shot 2016-06-20 at 6.52.16 PM.png

1.創建本地分支develop

git branch develop

現在 git branch一下發現有兩個多了一個develop分支,且當前分支為master


Screen Shot 2016-06-20 at 6.41.27 PM.png

Screen Shot 2016-06-20 at 6.52.36 PM.png

2.把本地master的代碼merge(合並)到develop

  1.  
    git checkout develop // 切換當前分支為develop
  2.  
    git merge master // 把master分支的代碼合並到當前分支(develop)

Screen Shot 2016-06-20 at 6.45.02 PM.png

致此,代碼以合並到了develop,並且當前分支為develop

3.merge(合並)代碼到GitHUP develop(分支)

git push origin master:develop   // GitHub上並沒有develop分支,執行這句命令后會自動創建一個GitHub develop分支

Screen Shot 2016-06-20 at 6.58.08 PM.png

相應的GitHub上也出現了develop分支


Screen Shot 2016-06-20 at 6.58.35 PM.png


4.到此,本地develop、master和GitHub上develop、master都一致啦!
重點來啦,怎么使用剛剛創建好的那些個develop、master?再創建一個本地分支develop1來模擬多人開發情況,本地的develope分支和develop1分支分別修改代碼,然后提交到GitHub的develop分支,提交、拉去、沖突就能模擬多人開發環境了:

①.開發就用本地develop分支:查看分支狀態,如果在master就切換當前分支到develop,

git checkout develop

打開Xcode寫代碼,之后把代碼提交到本地develop,

  1.  
    git branch
  2.  
    git status
  3.  
    git add podfile MD5/EncryptionMD5.m MD5.xcodeproj/project.pbxproj
  4.  
    git commit -m '修改了podfile,viewcontrller'

Screen Shot 2016-06-20 at 8.05.14 PM.png


在develop分支下寫的代碼就會改變,而master和develop1中的不變,切換不同的分支,然后重新打開Xcode后發現確實如此! GitHub Desktop軟件上也一致。

②.本地develop分支代碼推到GitHub的develop分支。

  1.  
    // 應該先拉取 然后再推上去,
  2.  
    git pull origin develop:develop // 拉取到本地develop並合並,如果有沖突這個方法就不能用了,被拒絕拉取(下面的develop1分支會介紹另一種拉取方式)
  3.  
    git push origin develop:develop // 第一個develop是本地的,第二個是GitHub上的

看下GitHub上的master和develop確實有變動


Screen Shot 2016-06-20 at 8.12.27 PM.png

Screen Shot 2016-06-20 at 8.11.46 PM.png

③.OK,切換到develop1分支然后修改代碼,拉取,提交

  1.  
    git checkout develop1
  2.  
    git branch
  3.  
    git status
  4.  
    git add podfile
  5.  
    git commit -m '修改了podfile,添加了AFNetWorking'

Screen Shot 2016-06-20 at 8.23.09 PM.png

現在GitHub上develop分支的podfile文件是 pod 'SDWebImage',但是本地develop1分支的podfile文件是 pod 'AFNetWorking',會產生沖突。

先拉取GitHub的develop分支到本地develop1,合並后再提交本地develop1到GitHub的develop分支。

git pull origin develop:develop1

Screen Shot 2016-06-20 at 8.29.03 PM.png

rejected 被拒絕了,因為有沖突。

現在換一種方法:

  1.  
    git fetch origin develop //更新GitHub的develop分支到當前本地分支(develop1)
  2.  
    git log -p develop1..origin/develop // 比較本地分支(develop1)和GitHub的develop分支的差別
  3.  
    git merge origin/develop // 合並沖突。
  4.  
    git status // 查看develop1分支的狀態
  5.  
    vim podfile // 打開podfile文件
  6.  
    git add pod file
  7.  
    git commit -m '解決沖突'
  8.  
    git push origin develop1:develop // 將本地develop1合並到GitHub的develop

Screen Shot 2016-06-20 at 8.41.16 PM.png

podfile 文件有沖突


Screen Shot 2016-06-20 at 8.39.55 PM.png

④.切換本地分支到develop

  1.  
    git checkout develop
  2.  
    git pull origin develop:develop // 更新本地develop分支的代碼,如果遇到沖突,解決方法參考③里面的。

目前來說,本地的develop、develop1和GitHub的develop分支保持一致啦,假設測試庫的代碼都已經測試通過了,要發版本!

⑤.合並代碼到本地主master,合並代碼到GitHub的master主分支

  1.  
    git checkout master // 切換到本地master主分支
  2.  
    git merge develop // 合並本地develop分支到本地master主分支。
  3.  
    git push origin master:master // 合並本地master主分支到GitHub的master主分支。

⑥.發布版本。

五.參考的文章

$ git pull
$ git push
$ git fetch
$ fetch與push的區別

加密的demo集成了MD5、RSA、AES、Base64:MD5_RSA_AES_BASE64下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM