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
 
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 lnj@gmail.com
 23 
 24 * 以上兩個命令會將用戶信息保存在當前代碼倉庫中
 25 
 26 # 只有配置了用戶和郵箱之后,git才能識別出操作的人員信息,通過鈎子(hooks)程序可以設置一些動作
 27 # 例如單元測試發現問題后,自動給相關人員發送電子郵件
 28 * 注意 暫時不建議投入一毛錢精力
 29 
 30 3>  如果要一次性配置完成可以使用一下命令
 31 $ git config --global user.name lnj
 32 $ git config --global user.email lnj321@gmail.com
 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 manager@163.com
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

 

 


免責聲明!

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



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