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.將物理仿真行爲添加到仿真器中
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 # 從代碼庫(暫存區中刪除文件)
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
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
如何使用/學習第三方框架? 優秀的第三方框架都在 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
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時必定注意版本