一、簡介
什麼是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