天天看點

iOS-源代碼管理工具(Git)

一、簡介

什麼是git? git是一款開源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快、最簡單、最流行的   git的起源 作者是Linux之父:Linus Benedict Torvalds 當初開發git僅僅是為了輔助Linux核心的開發(管理源代碼)   git的現狀 在國外已經非常普及,國内并未普及(在慢慢普及) 越來越多的開源項目已經轉移到git   二、SVN 和 Git 對比 速度 在很多情況下,git的速度遠遠比SVN快   結構 SVN是集中式管理,git是分布式管理   其他 SVN使用分支比較笨拙,git可以輕松擁有無限個分支 SVN必須聯網才能正常工作,git支援本地版本控制工作 舊版本的SVN會在每一個目錄置放一個.svn,git隻會在根目錄擁有一個.git   分布式和集中式的最大差別在于:在分布式下,開發者可以本地送出。每個開發者機器上都有一個伺服器的資料庫     三、使用 Git 跟SVN一樣,你可以通過指令行敲指令或者圖形界面用戶端使用git

在Mac上,比較好用的git圖形界面用戶端有

SourceTree 下載下傳位址: http://www.sourcetreeapp.com/download/   GitHub 下載下傳位址: https://mac.github.com 不過它是專門為GitHub網站而設計的   Xcode   四、git常用指令 git help :git指令幫助手冊 檢視其他指令的做法:git help 其他指令   git config :git的配置資訊相關(修改的是.git/config檔案) 配置使用者名:git config “user.name” 使用者名(用于跟蹤修改記錄) 配置郵箱:git config “user.email” 郵箱(用于多人開發間的溝通) 檢視配置資訊:git config –l 編輯配置資訊:git config –e(用vim編輯,:wq是退出vim編輯器) 設定指令的别名:git config alias.别名 原指令名稱 設定帶參數指令的别名:git config alias.别名 “原指令名稱 參數” 将此設定應用到整個系統中:git config ––gloabal   git status :查檔案的狀态 檢視某個檔案的狀态:git status 檔案名 檢視目前路徑所有檔案的狀态:git status

git log :檢視檔案的修改日志 檢視某個檔案的修改日志:git log 檔案名 檢視目前路徑所有檔案的修改日志:git log 用一行的方式檢視簡單的日志資訊:git log ––pretty=oneline 檢視最近的N次修改:git log –N(N是一個整數)   git diff :檢視檔案最新改動的地方 檢視某個檔案的最新改動的地方:git diff 檔案名 檢視目前路徑所有檔案最新改動的地方:git diff   git init :初始化一個空的本地倉庫,生成一個.git目錄,用于維護版本資訊 在目前路徑初始化倉庫:git init 在其他路徑初始化倉庫:git init 倉庫路徑   git add :将工作區的檔案儲存到暫緩區 儲存某個檔案到暫緩區:git add 檔案名 儲存目前路徑的所有檔案到暫緩區:git add .(注意,最後是一個點 . )   git commit :将暫緩區的檔案送出到目前分支 送出某個檔案到分支:git commit -m ”注釋” 檔案名 儲存目前路徑的所有檔案到分支:git commit -m ”注釋”    git reset :版本回退(建議加上––hard參數,git支援無限次後悔) 回退到上一個版本:git reset ––hard HEAD^ 回退到上上一個版本:git reset ––hard HEAD^^ 回退到上N個版本:git reset ––hard HEAD~N(N是一個整數) 回退到任意一個版本:git reset ––hard 版本号(版本号用7位即可)   git reflog :檢視分支引用記錄(能夠檢視所有的版本号)   git rm:删除檔案(删完之後要進行commit操作,才能同步到版本庫)   git clone:下載下傳遠端倉庫到本地 下載下傳遠端倉庫到目前路徑:git clone 倉庫的URL 下載下傳遠端倉庫到特定路徑:git clone 倉庫的URL 存放倉庫的路徑   git pull:下載下傳遠端倉庫的最新資訊到本地倉庫   git push:将本地的倉庫資訊推送到遠端倉庫   五、工作原理 如果想了解git的工作原理,有幾個核心概念必須知道 工作區(Working Directory):倉庫檔案夾裡除.git目錄以外的内容   版本庫(Repository):.git目錄,用于存儲記錄版本資訊 暫緩區(stage) 分支(master):git自動建立的第一個分支 HEAD指針:用于指向目前分支   git add和git commit的原理 git add :把檔案修改添加到暫存區 git commit :把暫存區的所有内容送出到目前分支         六、遠端倉庫 如果是多人團隊開發,最好還是搭建一個遠端倉庫   搭建遠端倉庫的途徑 自己搭建一個git伺服器:費時費力 在GitHub上托管項目:公開項目免費、私有項目收費,很多第三方開源項目 在oschina上托管項目:完全免費,在國内通路速度快(推薦使用)   七、搭建GitHub遠端倉庫  注冊一個GitHub帳号: https://github.com   打開“Account Settings”   1.配置SSH Key    點選“SSH keys” 配置Mac的SSH Key的公鑰(用于限制送出)       在Mac上生成SSH Key(在終端輸入下面指令) cd ~/.ssh ssh-keygen -t rsa -C "你的郵箱位址” 然後一直敲回車   然後就會在~/.ssh目錄下生成SSK Key的秘鑰對 id_rsa :私鑰,不可洩露 id_rsa.pub :公鑰,可以公開(将這個檔案的内容粘貼到GitHub上)   利用cat指令可以檢視檔案的内容 cat id_rsa.pub   2.添加倉庫 拷貝倉庫位址,用于下載下傳到本地   如果想删除倉庫,也很簡單       筆記

1 01. GIT簡介(PPT)
  2 ================================================================================
  3 
  4 02. GIT指令行幫助
  5 ================================================================================
  6 $ svn help
  7 檢視svn所有指令的幫助
  8 $ svn help 子指令
  9 
 10 # 要退出幫助資訊,按"q"
 11 # 翻看下頁,按"空格"
 12 # 翻看上頁,按"CTRL+B"
 13 # 要搜尋相關文字,按"/"然後輸入"相關文字"
 14 
 15 03. 建立代碼庫 & 配置個人資訊
 16 ================================================================================
 17 1>  建立代碼倉庫
 18 $ git init
 19 
 20 2>  配置使用者名和郵箱
 21 $ git config user.name lnj
 22 $ git config user.email [email protected]
 23 
 24 * 以上兩個指令會将使用者資訊儲存在目前代碼倉庫中
 25 
 26 # 隻有配置了使用者和郵箱之後,git才能識别出操作的人員資訊,通過鈎子(hooks)程式可以設定一些動作
 27 # 例如單元測試發現問題後,自動給相關人員發送電子郵件
 28 * 注意 暫時不建議投入一毛錢精力
 29 
 30 3>  如果要一次性配置完成可以使用一下指令
 31 $ git config --global user.name lnj
 32 $ git config --global user.email lnj32[email protected]
 33 
 34 * 以上兩個指令會将使用者資訊儲存在使用者目錄下的 .gitconfig 檔案中
 35 
 36 4>  檢視目前所有配置
 37 $ git config -l
 38 
 39 04. 實際開發
 40 ================================================================================
 41 1>  建立代碼,開始開發
 42 $ touch main.c
 43 $ open main.c
 44 
 45 2>  将代碼添加到代碼庫
 46 # 檢視目前代碼庫狀态
 47 $ git status
 48 # 将檔案添加到代碼庫
 49 $ git add main.c
 50 # 将修改送出到代碼庫
 51 $ git commit -m "添加了main.c"
 52 
 53 提示:
 54 *   在此一定要使用 -m 參數指定修改的備注資訊
 55 *   否則會進入 vim 編輯器,如果對vim不熟悉,會是很糟糕的事情
 56 
 57 # 将目前檔案夾下的所有建立或修改的檔案一次性添加到代碼庫
 58 $ git add .
 59 
 60 3>  添加多個檔案
 61 $ touch Person.h Person.m
 62 $ git add .
 63 $ git commit -m "添加了Person類"
 64 $ open Person.h
 65 $ git add .
 66 $ git commit -m "增加Person類屬性"
 67 
 68 * 注意 使用git時,每一次修改都需要添加再送出,這一點是與svn不一樣的
 69 
 70 git 的重要概念及工作原理
 71 --------------------------------------------------------------------------------
 72 工作區
 73 暫存區(staged)
 74 分支(HEAD)
 75 
 76 05. 别名 & 日志
 77 ================================================================================
 78 $ git config alias.st status
 79 $ git config alias.ci "commit -m"
 80 
 81 個人建議:除非特殊原因,最好不要設定别名,否則換一台機器就不會用了
 82 
 83 # 檢視所有版本庫日志
 84 $ git log
 85 # 檢視指定檔案的版本庫日志
 86 $ git log 檔案名
 87 
 88 # 配置帶顔色的log别名
 89 $ 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"
 90 
 91 提示:在git中,版本号是一個由SHA1生成的哈希值
 92 
 93 06. 版本号,讓我們在任意版本之間穿梭
 94 ================================================================================
 95 # 回到目前版本,放棄所有沒有送出的修改
 96 $ git reset --hard HEAD
 97 # 回到上一個版本
 98 $ git reset --hard HEAD^
 99 # 回到之前第3個修訂版本
100 $ git reset --hard HEAD~(3)
101 # 回到指定版本号的版本
102 $ git reset e695b67
103 
104 # 檢視分支引用記錄
105 $ git reflog
106 
107 07. 單個檔案的修改管理
108 ================================================================================
109 # 檢視檔案變化
110 $ git diff
111 # 撤銷對檔案做的修改
112 $ git checkout Person.h
113 # 從代碼庫(暫存區中删除檔案)      
1 01. 建立代碼倉庫(專門用于團隊開發的代碼倉庫)
 2 ================================================================================
 3 
 4 # 切換目錄
 5 $ cd /Users/lnj/Desktop/git演練/公司/weibo
 6 # 建立空白代碼庫(專門用于團隊開發)
 7 $ git init --bare
 8 
 9 02. 項目經理準備項目(前奏)
10 ================================================================================
11 
12 # 切換目錄
13 $ cd /Users/lnj/Desktop/git演練/經理
14 # "克隆"代碼庫到本地
15 $ git clone /Users/lnj/Desktop/git演練/公司/weibo/
16 
17 # 個人資訊配置(因為要示範一台機器上的多人協作,日常開發可以忽略)
18 $ git config user.name manager
19 $ git config user.email [email protected]
20 
21 .gitignore
22 --------------------------------------------------------------------------------
23 .gitignore可以指定哪些檔案不納入版本庫的管理
24 
25 參考網址:https://github.com/github/gitignore
26 
27 # 指令行中進入與.git同級的目錄
28 $ cd /Users/lnj/Desktop/git演練/經理/weibo
29 
30 将以下指令一次性粘貼到指令行中
31 --------------------------------------------------------------------------------
32 echo -e "# Xcode
33 #
34 build/
35 *.pbxuser
36 *.mode1v3
37 *.mode2v3
38 *.perspectivev3
39 xcuserdata
40 *.xccheckout
41 *.moved-aside
42 DerivedData
43 *.hmap
44 *.ipa
45 *.xcuserstate
46 # CocoaPods
47 #
48 # We recommend against adding the Pods directory to your .gitignore. However
49 # you should judge for yourself, the pros and cons are mentioned at:
50 # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
51 #
52 # Pods/" > .gitignore
53 --------------------------------------------------------------------------------
54 # 将.gitignore添加到代碼庫
55 $ git add .gitignore
56 
57 03. 建立項目
58 ================================================================================
59 送出同時"push"到遠端代碼倉庫
60 
61 04. 新人加入
62 ================================================================================
63 
64 ...
65 
66 05. 分布式的代碼庫 - 僅供參考
67 ================================================================================
68 由于git是分布式的,任何一台計算機上都保留有完整的代碼庫的内容,是以可以把團隊開發的代碼庫放在任何位置
69 
70 
71 多個遠端代碼庫之間的同步演練"提示,此演練僅供了解,具體的使用,需要一定的團隊規模之後,才能夠體會"
72 
73 
74 06. 分支管理 - Tag
75 ================================================================================
76 # 檢視目前标簽
77 $ git tag
78 # 在本地代碼庫給項目打上一個标簽
79 $ git tag -a v1.0 -m 'Version 1.0'
80 # 将标簽添推送到遠端代碼庫中
81 $ git push origin v1.0
82 
83 # 使用tag,就能夠将項目快速切換到某一個中間狀态,例如産品開發線上的某一個穩定版本
84 # 簽出v1.0标簽
85 $ git checkout v1.0
86 # 從簽出狀态建立v1.0bugfix分支
87 $ git checkout -b bugfix1.0
88 
89 # 檢視遠端分支
90 $ git branch -r
91 # 删除遠端分支
92 $ git branch -r -d origin/bugfix1.0      
1 01. 分布式的代碼庫 - 僅供參考
 2 ================================================================================
 3 由于git是分布式的,任何一台計算機上都保留有完整的代碼庫的内容,是以可以把團隊開發的代碼庫放在任何位置
 4 
 5 
 6 多個遠端代碼庫之間的同步演練"提示,此演練僅供了解,具體的使用,需要一定的團隊規模之後,才能夠體會"
 7 
 8 
 9 02. 分支管理 - Tag
10 ================================================================================
11 # 檢視目前标簽
12 $ git tag
13 # 在本地代碼庫給項目打上一個标簽
14 $ git tag -a v1.0 -m 'Version 1.0'
15 # 将标簽添推送到遠端代碼庫中
16 $ git push origin v1.0
17 
18 # 使用tag,就能夠将項目快速切換到某一個中間狀态,例如産品開發線上的某一個穩定版本
19 # 簽出v1.0标簽
20 $ git checkout v1.0
21 # 從簽出狀态建立v1.0bugfix分支
22 $ git checkout -b bugfix1.0
23 
24 # 檢視遠端分支
25 $ git branch -r
26 # 删除遠端分支
27 $ git branch -r -d origin/bugfix1.0      
1 如何使用/學習第三方架構?
 2 
 3 優秀的第三方架構都在 github.com
 4 
 5 1> 搜尋
 6 2> git clone 獲得完整版本
 7 $ git clone https://github.com/AFNetworking/AFNetworking.git
 8 3> 擷取最新版本 git pull
 9 * 進入clone的本地檔案夾
10 $ git pull
11 
12 4> 看github上的文檔,優秀的第三方架構都有好的文檔
13 5> 編寫測試程式,看運作結果
14 6> 針對感興趣的部分,看源代碼
15 
16 7> 有問題去http://stackoverflow.com      

轉載于:https://www.cnblogs.com/Yishu/p/10237209.html