IOS Git源代碼管理工具

 

1.新建一個「本地倉庫」
$ git init

2.配置倉庫
》告訴git你是誰
git config user.name lnj
》告訴git怎麼聯繫你
git config user.email lnj@itcast.cn

》上面一種配置方式是一次性的配置, 會配置到被管理文件的。git文件夾下
》下面一種配置方式是一勞永逸的方式:
git config --global user.name lmj
git config --global user.email lmj@itcast.cn

》如何學習git指令
>學習git指令和SVN指令的學習實際上是同樣的, 只不過展示的方式不太同樣, git是經過使用指南的方式告訴咱們某一個指令如何使用
>這個指南實際上是一個不可編輯的vim
Q退出指南
按空格下一頁
control + B 上一頁
/須要搜索的內容 能夠進行搜索


git常規指令
》git status 查看文件狀態
》git add 添加文件到「暫存區」
》git commit 文件名稱   添加文件到」本地倉庫「
注意:若是沒有在commit後面加上 -m說明修改了什麼, 會自動進入vim界面, 要求咱們輸入修改信息
按鍵盤上的 i 表明開始輸入內容
輸入完畢以後按 esc 而後按 :wq
因此: 若是之後在終端中提交最好在後面加上-m
》注意: git中的add和SVN中的add不太同樣, SVN中只須要add一次, 而git中每次新建或者修改以後都須要從新add

》1.爲添加以前的顏色
紅色 表明在」工做區「
》2.添加到暫存區以後的顏色
綠色 代碼在」暫存區「


》注意: git默認沒有簡寫指令
》注意: 通常狀況下不建議自定義簡寫指令
》git中的簡寫稱之爲起別名

> 查看log
》git log 文件名
》注意: GIt中的版本號是一個」40位「的哈希值, 而SVN中的版本號是一個遞增的整數
》已經提交
git reset —hard HEAD^ 返回上一個版本
其中—hard表明強制重置
git reset —hard 版本號(只須要寫前7位)
》未提交
git checkout 文件名 回退到上一次提交的版本
git reset —hard HEAD  回退到上一次提交的版, 注意HEAD後面沒有尖號^


c9ad690 HEAD@{0}: commit: main.c

7026f99 HEAD@{1}: commit: 輸出結果

e950c89 HEAD@{2}: commit: 新增輸入

c7bf91c HEAD@{3}: commit: 添加變量

cbd9e52 HEAD@{4}: commit: 刪除print函數

45ea44d HEAD@{5}: commit: 添加了printf函數

0da06d8 HEAD@{6}: commit (initial): i



>git reflog  查看全部修改信息(全部版本)


》查看文件被修改的什麼地方
】    》git diff 文件名
》若是顯示綠色表明新增
》若是顯示紅色表明刪除


遠程倉庫
SVN須要一個單獨的服務器
Git不須要: 文件中、U盤中、雲上、github、OSChina...

1.新建git遠程倉庫
》git init —bare
注意: 這個倉庫僅僅是用於管理代碼, 不參與開發

2.項目經理初始化項目
》2.1先克隆一份空得倉庫到本地
git clone /Users/apple/Desktop/working/公司遠程倉庫

》2.2忽略不須要加入版本控制器的文件以及文件夾
.gitignore
注意: 配置忽略文件只須要到github上搜索.gitignore拷貝別人寫好的代碼便可
配置.gitignore必定要在和.git隱藏文件夾同一級的目錄下
》2.3生成好.gitignore文件以後, 還須要將.gitignore文件添加到版本控制
git add  .gitignore
git commit .gitignore -m」」

》2.4新建項目
》 source conrol—>commit  將代碼提交到本地倉庫
》source conrol—>push 將代碼提交到遠程倉庫


git中默認就會建立一個分支, 這個分支叫作origin/master, 至關於svn中的trunk


專業人員只須要在git倉庫的hooks文件夾中寫一些指令, 就能夠完成自動測試(壓力測試、自動測試、集成測試、冒煙測試、。。。)


》 和SVN同樣, 若是服務器倉庫的代碼被修改了, 咱們再提交代碼也會報錯。
fetch first == out of data

總結:
git和svn最大的區別
》1.git每次修改新增都須要add
》2.git每臺電腦都有一個倉庫
》3.git是先提交到本地倉庫, 再提交到遠程倉庫




新人服務器搭建
1.新建一個新人服務器
2.初始化倉庫
git init --bare
3.添加一個新的遠程倉庫
source control —> master —>config —>remotes —>add —> add remote
4.將經理最新的代碼提交到新人服務器
5.經理分配新人服務器的地址給新人



GIT的分支管理
》在本地代碼庫給項目打上一個標籤
git tag -a v1.0 -m 'Version 1.0’
》查看當前標籤
git tag
注意: 此時此刻打上的這個標籤僅僅是一個本地標籤。(和服務器沒有關係)
》將標籤添推送到遠程代碼庫中
git push origin v1.0


1.開發
2.發佈
3.保存穩定版本
4.繼續開發
5.出現bug
6.分配員工到分支上修復bug
>員工從服務器下載最新代碼
》員工利用git checkout v1.0指令快速切換到1.0版本
》根據提示:開啓一個新的分支開始修復代碼
git checkout -b 1.0bug_fix

7.合併修復後的代碼到主線
8.備份穩定版本




經過Xcode將代碼提交到github上, 把倉庫放在github上


=======================================================1.註冊一個github帳號
》2.配置SSH Keys, 只要配置了SSH Keys就能夠和github無縫銜接

》點擊暱稱來到我的主頁
》 點擊主頁中的設置(setting)
》 點擊SSH Keys
》點擊 generating SSH keys

》1.檢查本地的ssh keys
在「用戶目錄」下 ls -al ~/.ssh
2.若是文件夾不存在須要手動建立一個
mkdir .ssh

3.根據github的提示2生成ssh keys
在.ssh目錄下執行 ssh-keygen -t rsa -C "your_email@example.com」
輸入完成以後連續按下回車, 知道出現牛逼的圖形位置
4.生成完公鑰和私鑰以後輸入
ls -la查看是否生成成功   id_rsa(私鑰) id_rsa.pub(公鑰)
5.根據提示3得到公鑰
pbcopy < ~/.ssh/id_rsa.pub
6.點擊 setting —》 ssh key —>add ssh key
將剛纔獲取到得公鑰添加進去

7.更具github第4步提示, 驗證公鑰
驗證成功網頁上的灰色圓點會變成綠色

8.拷貝到公鑰以後打開github主頁
》點擊倉庫(Repositories)
》再點擊new來到github建立倉庫界面

9.經過github提供的地址下載一個空得倉庫到本地
》建立一個新的項目到本地倉庫文件夾中
》利用Xcode提交代碼到github
》注意: 要求輸入用戶名密碼時候, 輸入的是github上顯示的暱稱而不是登陸帳號

=======================================================






現實生活:
運動場 == 物理仿真器
跑步 == 物理仿真行爲
人 == 仿真元素

// 1.建立物理仿真器
// 2.建立物理仿真行爲
// 3.將物理仿真行爲添加到仿真器中
View Code

 

GIT本地操做

01. GIT簡介(PPT)
================================================================================

02. GIT命令行幫助
================================================================================
$ svn help
查看svn全部命令的幫助
$ svn help 子命令

# 要退出幫助信息,按"q"
# 翻看下頁,按"空格"
# 翻看上頁,按"CTRL+B"
# 要搜索相關文字,按"/"而後輸入"相關文字"

03. 建立代碼庫 & 配置我的信息
================================================================================
1>  建立代碼倉庫
$ git init

2>  配置用戶名和郵箱
$ git config user.name lnj
$ git config user.email lnj@gmail.com

* 以上兩個命令會將用戶信息保存在當前代碼倉庫中

# 只有配置了用戶和郵箱以後,git才能識別出操做的人員信息,經過鉤子(hooks)程序能夠設置一些動做
# 例如單元測試發現問題後,自動給相關人員發送電子郵件
* 注意 暫時不建議投入一毛錢精力

3>  若是要一次性配置完成可使用一下命令
$ git config --global user.name lnj
$ git config --global user.email lnj321@gmail.com

* 以上兩個命令會將用戶信息保存在用戶目錄下的 .gitconfig 文件中

4>  查看當前全部配置
$ git config -l

04. 實際開發
================================================================================
1>  建立代碼,開始開發
$ touch main.c
$ open main.c

2>  將代碼添加到代碼庫
# 查看當前代碼庫狀態
$ git status
# 將文件添加到代碼庫
$ git add main.c
# 將修改提交到代碼庫
$ git commit -m "添加了main.c"

提示:
*   在此必定要使用 -m 參數指定修改的備註信息
*   不然會進入 vim 編輯器,若是對vim不熟悉,會是很糟糕的事情

# 將當前文件夾下的全部新建或修改的文件一次性添加到代碼庫
$ git add .

3>  添加多個文件
$ touch Person.h Person.m
$ git add .
$ git commit -m "添加了Person類"
$ open Person.h
$ git add .
$ git commit -m "增長Person類屬性"

* 注意 使用git時,每一次修改都須要添加再提交,這一點是與svn不同的

git 的重要概念及工做原理
--------------------------------------------------------------------------------
工做區
暫存區(staged)
分支(HEAD)

05. 別名 & 日誌
================================================================================
$ git config alias.st status
$ git config alias.ci "commit -m"

我的建議:除非特殊緣由,最好不要設置別名,不然換一臺機器就不會用了

# 查看全部版本庫日誌
$ git log
# 查看指定文件的版本庫日誌
$ git log 文件名

# 配置帶顏色的log別名
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

提示:在git中,版本號是一個由SHA1生成的哈希值

06. 版本號,讓咱們在任意版本之間穿梭
================================================================================
# 回到當前版本,放棄全部沒有提交的修改
$ git reset --hard HEAD
# 回到上一個版本
$ git reset --hard HEAD^
# 回到以前第3個修訂版本
$ git reset --hard HEAD~(3)
# 回到指定版本號的版本
$ git reset e695b67

# 查看分支引用記錄
$ git reflog

07. 單個文件的修改管理
================================================================================
# 查看文件變化
$ git diff
# 撤銷對文件作的修改
$ git checkout Person.h
# 從代碼庫(暫存區中刪除文件)
View Code

 GIT團隊開發操做

01. 創建代碼倉庫(專門用於團隊開發的代碼倉庫)
================================================================================

# 切換目錄
$ cd /Users/lnj/Desktop/git演練/公司/weibo
# 創建空白代碼庫(專門用於團隊開發)
$ git init --bare

02. 項目經理準備項目(前奏)
================================================================================

# 切換目錄
$ cd /Users/lnj/Desktop/git演練/經理
# "克隆"代碼庫到本地
$ git clone /Users/lnj/Desktop/git演練/公司/weibo/

# 我的信息配置(由於要演示一臺機器上的多人協做,平常開發能夠忽略)
$ git config user.name manager
$ git config user.email manager@163.com

.gitignore
--------------------------------------------------------------------------------
.gitignore能夠指定哪些文件不歸入版本庫的管理

參考網址:https://github.com/github/gitignore

# 命令行中進入與.git同級的目錄
$ cd /Users/lnj/Desktop/git演練/經理/weibo

將如下命令一次性粘貼到命令行中
--------------------------------------------------------------------------------
echo -e "# Xcode
#
build/
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
# Pods/" > .gitignore
--------------------------------------------------------------------------------
# 將.gitignore添加到代碼庫
$ git add .gitignore

03. 建立項目
================================================================================
提交同時"push"到遠程代碼倉庫

04. 新人加入
================================================================================

...

05. 分佈式的代碼庫 - 僅供參考
================================================================================
因爲git是分佈式的,任何一臺計算機上都保留有完整的代碼庫的內容,所以能夠把團隊開發的代碼庫放在任何位置


多個遠程代碼庫之間的同步演練"提示,此演練僅供瞭解,具體的使用,須要必定的團隊規模以後,纔可以體會"


06. 分支管理 - Tag
================================================================================
# 查看當前標籤
$ git tag
# 在本地代碼庫給項目打上一個標籤
$ git tag -a v1.0 -m 'Version 1.0'
# 將標籤添推送到遠程代碼庫中
$ git push origin v1.0

# 使用tag,就可以將項目快速切換到某一箇中間狀態,例如產品開發線上的某一個穩定版本
# 簽出v1.0標籤
$ git checkout v1.0
# 從簽出狀態建立v1.0bugfix分支
$ git checkout -b bugfix1.0

# 查看遠程分支
$ git branch -r
# 刪除遠程分支
$ git branch -r -d origin/bugfix1.0
View Code

GIT分支管理

01. 分佈式的代碼庫 - 僅供參考
================================================================================
因爲git是分佈式的,任何一臺計算機上都保留有完整的代碼庫的內容,所以能夠把團隊開發的代碼庫放在任何位置


多個遠程代碼庫之間的同步演練"提示,此演練僅供瞭解,具體的使用,須要必定的團隊規模以後,纔可以體會"


02. 分支管理 - Tag
================================================================================
# 查看當前標籤
$ git tag
# 在本地代碼庫給項目打上一個標籤
$ git tag -a v1.0 -m 'Version 1.0'
# 將標籤添推送到遠程代碼庫中
$ git push origin v1.0

# 使用tag,就可以將項目快速切換到某一箇中間狀態,例如產品開發線上的某一個穩定版本
# 簽出v1.0標籤
$ git checkout v1.0
# 從簽出狀態建立v1.0bugfix分支
$ git checkout -b bugfix1.0

# 查看遠程分支
$ git branch -r
# 刪除遠程分支
$ git branch -r -d origin/bugfix1.0
View Code

GITHUB如何使用第三方庫

如何使用/學習第三方框架?

優秀的第三方框架都在 github.com

1> 搜索
2> git clone 得到完整版本
$ git clone https://github.com/AFNetworking/AFNetworking.git
3> 獲取最新版本 git pull
* 進入clone的本地文件夾
$ git pull

4> 看github上的文檔,優秀的第三方框架都有好的文檔
5> 編寫測試程序,看運行結果
6> 針對感興趣的部分,看源代碼

7> 有問題去http://stackoverflow.com
View Code

靜態庫

01. 爲何要作靜態庫
================================================================================

1>  國內的企業,掌握有核心技術,同時是又但願更多的程序員來使用其技術,所以採用"閉源"的方式開發使用
例如:百度地圖,友盟,JPush等

2>  在企業開發中,一些核心技術或者經常使用框架,出於安全性和穩定性的考慮,也會提供靜態庫給程序員使用

02. 靜態庫的特色
================================================================================
.a + .h

03. 靜態庫簡單演練
================================================================================

1>  新建CZTools項目
2>  建立一個類方法,實現一個簡單的加法
3>  編譯
#   注意,在編譯靜態庫時,須要編譯兩個版本 -> 真機(arm) | 模擬器(i386)
4>  新建項目將編譯生成的.a + .h拖到項目中使用

04. 靜態庫中的資源包的使用
================================================================================

問題:有些第三方庫會使用到一些圖片素材,例如公司的logo等。

可是因爲Xcode默認在編譯時會把全部的素材文件導入到mainBundle中,爲了不與使用靜態庫的程序衝突。
在靜態庫中若是要使用圖片素材,會利用bundle的手段

1>  創建bundle,而且向其中添加圖片
2>  建立一個類方法,返回圖片
3>  編譯
4>  調用方若是須要使用,須要導入 .h + .a + XXX.bundle

05. 靜態庫中的自定義視圖
================================================================================
問題:程序須要測試
靜態庫如何測試呢?

建立複合項目

1>  複習塊代碼傳值

06. 靜態庫的使用
================================================================================

新建項目將編譯生成的.a + .h拖到項目中使用

07. 靜態庫的種類
================================================================================

靜態庫文件的版本(4種)
1.真機-Debug版本
2.真機-Release版本
3.模擬器-Debug版本
4.模擬器-Release版本

調試版本 VS 發佈版本
--------------------------------------------------------------------------------
- 調試版本會包含完整的符號信息,以方便調試
- 調試版本不會對代碼進行優化

- 發佈版本不會包含完整的符號信息
- 發佈版本的執行代碼是進行過優化的
- 發佈版本的大小會比調試版本的略小
- 在執行速度方面,調試版本會更快些,但不意味着會有顯著的提高

08. 靜態庫的合併
================================================================================

# 檢測.a的類型
$ lipo -info libCZTools.a

# 合併.a
lipo -create Debug-iphoneos/libCZTools.a Debug-iphonesimulator/libCZTools.a -output libCZTools.a

# 合併.a的好處,開發過程當中既能夠在真機上調試,也能夠在模擬器上調試
# 合併.a的壞處,若是靜態庫太大,合併打包後,會很是大,所以不少第三方的靜態庫的.a是區分版本的
# 從此在使用.a時必定注意版本
View Code
相關文章
相關標籤/搜索