新手瞭解 有不對的地方指點下 首先, 瞭解下什麼是GIT,GIT是一款開元的分散式版本控制工具, 在世界上的所有分散式版本控制工具中,GIT是最簡單,最流行,同時也是最常用的 相比於其他版本的控制工具而言,GIT也有著自己的特點 舉個例子,GIT與集中式版本控制中的SVN相比來說,區別主要在於以下幾 ...
新手瞭解 有不對的地方指點下
首先, 瞭解下什麼是GIT,GIT是一款開元的分散式版本控制工具, 在世界上的所有分散式版本控制工具中,GIT是最簡單,最流行,同時也是最常用的
相比於其他版本的控制工具而言,GIT也有著自己的特點
舉個例子,GIT與集中式版本控制中的SVN相比來說,區別主要在於以下幾點:
1 很多情況下, git的速度遠遠比SVN快
2 SVN是集中式管理, git是分散式管理
3 SVN使用分支比較笨拙, git可以輕鬆擁有無限個分支
4 SVN必須聯網才能工作, git支持本地版本的控制工作
5 舊版本的SVN會在每一個目錄置放.svn, git只會在根目錄下擁有一個.git
集中式版本控制
分散式版本控制
話不多說 回到主題上,命令行實現個人開發,和團隊開發的GIT使用
因為涉及到隱藏文件的顯示,所以實現打開隱藏文件的顯示
全部顯示
defaults write com.apple.finder AppleShowAllFiles -bool true
全部隱藏
defaults write com.apple.finder AppleShowAllFiles -bool false
個人開發演練的代碼
1.進入到所需工作的目錄, 並且初始化一個代碼倉庫
lanoudeMac-mini-5:~ lanou$ cd /Users/lanou/Desktop/GIT演練/個人開發 lanoudeMac-mini-5:個人開發 lanou$ git init Initialized empty Git repository in /Users/lanou/Desktop/GIT演練/個人開發/.git/
2.需要給GIT倉庫配置一個用戶名和郵箱,如果不配置的話,會自動設置你的用戶名為電腦用戶名,郵箱為電腦用戶名@apple.com,因為後面涉及到針對用戶的管理,所以需要
設置用戶名
lanoudeMac-mini-5:個人開發 lanou$ git config user.name "weiboqy" lanoudeMac-mini-5:個人開發 lanou$ git config user.email "[email protected]" lanoudeMac-mini-5:個人開發 lanou$
設置好後並沒用任何的顯示,可以在工作目錄下的/.git/config文件中查看自己輸入的用戶名和郵箱是否存在
3.初始化代碼
lanoudeMac-mini-5:個人開發 lanou$ touch main.m lanoudeMac-mini-5:個人開發 lanou$ git add main.m
touch main.m的作用是在工作目錄之下,.git目錄之外創建一個main.m文件 ,這個文件我們用來實驗
git add main.m 作用是 將工作區的代碼 添加到暫緩區中
lanoudeMac-mini-5:個人開發 lanou$ touch main.m lanoudeMac-mini-5:個人開發 lanou$ git add main.m lanoudeMac-mini-5:個人開發 lanou$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: main.m(綠色) lanoudeMac-mini-5:個人開發 lanou$ touch main.h lanoudeMac-mini-5:個人開發 lanou$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: main.m(綠色) Untracked files: (use "git add <file>..." to include in what will be committed) main.h(紅色) lanoudeMac-mini-5:個人開發 lanou$
4.git status 查看文件的狀態
Untracked files(紅⾊色⽂文件):新添加的⽂文件或者新修改的⽂文件在⼯工作區中,沒有被添加到暫 緩區.
Changes to be committed(綠⾊色):將⼯工作區的代碼已經添加到暫緩區中,可以被提交到
代碼倉庫中了
這時候需要瞭解下GIT的幾個核心概念了
工作區:工作文件夾(倉庫文件夾)除.git目錄以外的內容
版本庫:.git目錄,用於存儲記錄版本信息
暫緩區(stage)
分支(master):git自動創建的第一個分支
git add:把文件修改添加到暫緩區
git commit:把暫緩區的所有內容提交到當前的分支
5.修改文件
lanoudeMac-mini-5:個人開發 lanou$ open main.m lanoudeMac-mini-5:個人開發 lanou$
open main.m 直接打開,修改好之後保存 git add main.m 添加到暫緩區
如果一個一個文件 添加到暫緩區會比較麻煩, git add . 可以講工作區的所有文件到添加到暫緩區
6.給git命令起別名
lanoudeMac-mini-5:個人開發 lanou$ git config alias.st "status" lanoudeMac-mini-5:個人開發 lanou$ git config alias.ci "commit -m" lanoudeMac-mini-5:個人開發 lanou$
如果每次都是輸入很長的命令,會比較麻煩,所以這就有了別名的存在
git config alias.別名 "本來的命令代碼"
相比於這樣而已,會有很大的便利之處
7.查看歷史版本
lanoudeMac-mini-5:個人開發 lanou$ git log commit 503c029c159acb0caa86a178715b1193733b2e34 Author: weiboqy <[email protected]> Date: Sun Mar 27 20:10:34 2016 +0800 main.m lanoudeMac-mini-5:個人開發 lanou$ git reflog 503c029 HEAD@{0}: commit (initial): main.m lanoudeMac-mini-5:個人開發 lanou$
如果想查看歷史版本的話,必須要將文件提交到分支中,也就是git commit命令
查看歷史版本有兩種方式,如上行所示,當歷史版本較多時,建議使用git reflog
GITde 版本號是有sha1加密演算法生成的40位哈希值,所以非常複雜。。
那為什麼有歷史版本的作用呢,比如說,現在使用的文件被我用炸了,沒有太好的辦法進行恢復,那麼我只需要回退到某一個時期的歷史版本就迎刃而解.
8.歷史版本回退
lanoudeMac-mini-5:個人開發 lanou$ git reset —hard HEAD //回退到當前,但還沒有上傳到分支的版本
//不做解釋了,因為版本數目不夠
git reset —hard HEAD^ //回退到前一個版本
git reset —hard HEAD^^ //回退到前一個的前一個版本
git reset —hard HEAD~100 git reset —hard 版本號前7位 //會退到前100個版本
團隊開發演練的代碼
團隊開發可以使用文件夾/GitHub/oschina來進行代碼共用
1.文件夾共用
如果所示的關係,weibo作為代碼共用庫
所以先創建好weibo的倉庫, 成為代碼共用庫
lanoudeMac-mini-5:weibo lanou$ cd /Users/lanou/Desktop/GIT演練/團隊開發/代碼共用庫/weibo
lanoudeMac-mini-5:weibo lanou$ git init --bare
git init --bare, 成為代碼共用庫, 因為是成為代碼的共用庫,所以不能是簡單的gie init
2.項目經理將代碼共用庫的內容克隆下來(clone)
lanoudeMac-mini-5:項目經理 lanou$ git clone /Users/lanou/Desktop/GIT演練/團隊開發/代碼共用庫/weibo/
3.項目經理初始化項目
創建一個忽略⽂文件: 在和.git等級⺫⽬目錄下創建⼀一個.gitignore⽂文件,在該⽂文件中指定需要忽略的⽂文件
在GitHub搜索.gitignore排名第一的就是 或者可以去https://github.com/github/gitignore/blob/master/Objective-C.gitignore查看OC需要忽略 的內容,將內容填寫到. gitignore中
4.將.gitignore添加到暫緩區並提交到分支
git add .
git commit -m "註釋"
5.創建項目
不能在項目經理目錄下的微博下創建項目,因為已經包含了 Git repository,所以要返回到上一個目錄下創建
在使用完畢之後 都要遵循以下一個順序
修改代碼—>git commit(提交到本地) —>git push (上傳到伺服器)
在使用前都需要pull下,以便別人修改了你沒有看到
如果有其他人需要加入開發,需要git clone 共用代碼庫的地址
需要註意的是 代碼衝突,以及storyboard的衝突問題
建議在團隊合作的時候 不要使用storyboard, 尤其是共用一個storyboard,特別容易發生衝突, 哪怕是移動storyboard的位置。