一.什么是Git
git 是一款開源的分布式版本管理工具,最初由Linus Torvalds創(chuàng)作,于2005年以GPL發(fā)布,最初目的是為了更好的管理Linux內(nèi)核開發(fā)而設(shè)計.
git 最初的開發(fā)動力是來自于BitKeeper和Monotone,git最初只是作為一個可以被其他前端包裝的后端而開發(fā)的,但后來git內(nèi)核已經(jīng)成熟到可以獨立地用作版本控制,很多著名的軟件都使用git進(jìn)行版本控制.
現(xiàn)在世界上所有的分布式版本控制工具中,git是最快骡苞、最簡單垂蜗、最流行的
版本控制:集中式、分布式
集中式:集中式版本控制系統(tǒng)解幽,版本庫是集中存放在中央服務(wù)器的贴见,而工作的時候,用的都是自己的電腦躲株,所以要先從中央服務(wù)器取得最新的版本片部,然后開始干活,干完活了霜定,再把自己的活推送給中央服務(wù)器档悠。中央服務(wù)器就好比是一個圖書管廊鸥,你要改一本書,必須先從圖書館借出來辖所,然后回到家自己改惰说,改完了,再放回到圖書館缘回。
缺點:必須得聯(lián)網(wǎng)時才能工作吆视,自己電腦上沒有服務(wù)器,只能請求網(wǎng)上的服務(wù)器獲得資源酥宴。(SVN)
分布式:分布式版本控制系統(tǒng)沒有中央服務(wù)器啦吧,每一個電腦上都是一個完整的版本庫,工作的時候都不需要聯(lián)網(wǎng)當(dāng)兩個或者兩個以上的人分別修改了不同的文件的時候幅虑,只需要把各自修改的內(nèi)容推送給對方即可丰滑,可以互相看到對方的修改了。安全性高倒庵,只要有一臺電腦沒有壞褒墨,就能重新得到完整的版本庫,不會跟集中式的一樣擎宝,中央服務(wù)器炸了就什么都沒有了郁妈。
git是一款開源的分布式版本控制工具,在世界上所有的分布式版本控制工具中绍申,git是最快噩咪、最簡單、最流行的
作者是Linux之父: Linus Benedict Torvalds
當(dāng)初開發(fā)git僅僅是為了輔助Linux內(nèi)核的發(fā)開(管理源代碼)
國外非常普及极阅,國內(nèi)一般
越來越多的開源項目已經(jīng)轉(zhuǎn)移到git
顯示隱藏文件(Mac OS)
$ defaults write com.apple.finder AppleShowAllFiles -bool true
- 需要重啟Finder
</br>
二. 個人開發(fā)(命令行)
1.進(jìn)入到工作目錄中(就是你想要將git倉庫創(chuàng)建的位置),初始化一個代碼倉庫
$ git init
2.給這個git倉庫配置一個用戶名和郵箱
$ git config user.name "username"
$ git config user.email "useremail@gmail.com"
3.初始化代碼
$ touch main.m
$ git add main.m
4.查看文件狀態(tài)
$ git status
- 文件顯示為紅色:新添加的文件或者修改的文件在工作區(qū)中,沒有被添加到暫緩區(qū)
- 文件顯示為綠色:添加的文件已經(jīng)添加到暫緩區(qū)中,這種狀態(tài)下的文件就可以被提交到代碼倉庫中了
5.修改文件
$ open main.m
6.將工作區(qū)中的文件添加到暫緩區(qū)中
$ git add main.m
-
要是想將所有文件添加到暫緩區(qū)中
$ git add .
7.給git命令起別名
$ git config alias.st "status"
$ git config alias.ci "commit -m"
- alias.后面是別名," "中的是被起別名的命令
8.查看歷史版本
$ git log
$ git reflog
- git版本號是由sha1加密算法生成的一個40位的哈希碼
- 7c4a8d09ca3762af61e59520943dc26494f8941b
9.版本回退
$ git reset --hard HEAD 重置到當(dāng)前版本
$ git reset --hard HEAD^ 重置到上個版本
$ git reset --hard HEAD^^ 重置到上上個版本
$ git reset --hard HEAD~1024 重置到往上1024個版本
$ git reset --hard git版本號前7位 重置到指定版本
10.--global的作用(可以用來配置全局的用戶名和密碼)
$ git config --global user.name "username"
$ git config --global user.email "useremail@gmail.com"
三. 團(tuán)隊開發(fā)
在團(tuán)隊開發(fā)程序時就需要創(chuàng)建一個代碼共享庫
1.創(chuàng)建代碼共享庫(讓一個文件成為共享庫)
$ git init --bare
2.A將共享代碼倉庫中的內(nèi)容clone下來
$ git clone 代碼共享庫的地址
3.A初始化項目
操作流程
- 忽略文件:在與.git同級目錄下創(chuàng)建一個.gitgnore文件,在該文件中指定需要忽略的文件
- 可以去 https://github.com/github/gitignore 查看OC需要忽略的內(nèi)容,將內(nèi)容填寫到.gitgnore中
https://github.com/github/gitignore/blob/master/Objective-C.gitignore (Objective-C) - git add . / git commit -m "注釋"將.gitignore添加到本地倉庫中
- 初始化項目在與.git同級目錄下
- 將初始化的項目提交到本地
- 將本地代碼庫中的內(nèi)容push到服務(wù)器中
4.B也開始進(jìn)行開發(fā)
操作流程
- git clone 共享代碼庫的地址
- 修改代碼或者文件
- git commit
- git push
注意:
- 同一個文件的共享
- 同一個文件共享時發(fā)生的代碼沖突
- 創(chuàng)建新文件的共享
- storyboard的共享(僅限iOS開發(fā))
- 靜態(tài)庫的共享(不需要像類似svn一樣執(zhí)行add命令)