GIT命令列的使用,GIT命令列使用
新手瞭解 有不對的地方指點下
首先, 瞭解下什麼是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 initInitialized 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 "weiboqy@163.com"lanoudeMac-mini-5:個人開發 lanou$
設定好後並沒用任何的顯示,可以在工作目錄下的/.git/config檔案中查看自己輸入的使用者名稱和郵箱是否存在
3.初始化代碼
lanoudeMac-mini-5:個人開發 lanou$ touch main.mlanoudeMac-mini-5:個人開發 lanou$ git add main.m
touch main.m的作用是在工作目錄之下,.git目錄之外建立一個main.m檔案 ,這個檔案我們用來實驗
git add main.m 作用是 將工作區的代碼 添加到暫緩區中
lanoudeMac-mini-5:個人開發 lanou$ touch main.mlanoudeMac-mini-5:個人開發 lanou$ git add main.mlanoudeMac-mini-5:個人開發 lanou$ git statusOn branch masterInitial commitChanges to be committed: (use "git rm --cached <file>..." to unstage)new file: main.m(綠色)lanoudeMac-mini-5:個人開發 lanou$ touch main.hlanoudeMac-mini-5:個人開發 lanou$ git statusOn branch masterInitial commitChanges 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.mlanoudeMac-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 logcommit 503c029c159acb0caa86a178715b1193733b2e34Author: weiboqy <weiboqy@163.com>Date: Sun Mar 27 20:10:34 2016 +0800 main.mlanoudeMac-mini-5:個人開發 lanou$ git reflog503c029 HEAD@{0}: commit (initial): main.mlanoudeMac-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的位置。
附上一張總結性的圖