開發中的程式碼管理工具熟知
一. 掌握 - git 概述
1. git 簡介?
1.什麼是git?
> git是一款開源的分散式版本控制工具
> 在世界上所有的分散式版本控制工具中,git是最快、最簡單、最流行的
2.git的起源?
> 作者是Linux之父:LinusBenedict Torvalds
> 當初開發git僅僅是為了輔助Linux核心的開發(管理原始碼)
3.git的現狀?
> 在國外已經非常普及,國內並未普及(在慢慢普及)
> 越來越多的開源專案已經轉移到git
2. 常見的原始碼管理工具有哪些?
> CVS
- 開啟版本控制之門
- 1990年誕生,
> SVN
- 全稱是Subversion,集中式版本控制之王者
- 是CVS的接班人,速度比CVS快,功能比CVS多且強大
- 在國內軟體企業中使用最為普遍(70%-90%)
> ClearCase
- 收費的集中式版本控制工具,安裝比Windows還大,執行比蝸牛還慢
- 能用ClearCase的一般是世界500強,他們有個共同的特點是財大氣粗或者人傻錢多
> VSS
- 微軟的集中式版本控制工具,整合在Visual Studio中
3. git 和 svn的簡單對比
> 速度
在很多情況下,git的速度遠遠比SVN快
> 結構
SVN是集中式管理,git是分散式管理
> 其他
SVN使用分支比較笨拙,git可以輕鬆擁有無限個分支
SVN必須聯網才能正常工作,git支援本地版本控制工作
舊版本的SVN會在每一個目錄置放一個.svn,git只會在根目錄擁有一個.git
4. SVN工作流程和GIT工作流程對比
- svn checkout —— gitclone
svn 只下載程式碼,git 會連同程式碼倉庫一起下載下來
- svn commit —— gitcommit
svn 是提交到伺服器,git中是提交到本地倉庫,需要使用push才能提交到伺服器
- svn update -git pull
都是從伺服器下載最新被修改的程式碼
分散式和集中式最大的區別在於:在分散式下,本地有個程式碼倉庫,開發者可以在本地提交; 而集中式版本控制, 只有在伺服器才有一個程式碼倉庫, 只能在伺服器進行統一管理
5. git工作原理
1.概念理解
- 工作區
> 與.git資料夾同級的其他資料夾或者子資料夾
- 版本控制庫
> 暫緩區
> 分支(Git不像SVN那樣有主幹和分支的概念. 僅僅存在分支,其中master分支為預設被建立的分支,類似於SVN中的主幹)
切換分支:通過控制HEAD指標指向不同的分支,就可以切換*
操作原則: 所有新新增/刪除/修改的檔案必須先新增到暫緩區,然後才能提交到HEAD指向的當前分支中
8. git使用環境
1.單人開發只需要一個本地庫
原因:不需要與他人共享程式碼,只負責管理自己程式碼即可;例如提交程式碼,刪除程式碼,版本控制等等
2.多人開發時需要一個共享版本庫
共享版本庫的形式:
本地共享庫:資料夾/U盤/硬碟
遠端共享庫:自己搭建git伺服器/ 託管到第三方平臺(例如github, oschina)
3.客戶端使用環境無論是單人開發還是多人開發,客戶端都可以使用命令列或者圖形介面使用git
> SourceTree
- 下載地址:http://www.sourcetreeapp.com/download/
> GitHub
- 下載地址:https://mac.github.com
- 不過它是專門為GitHub網站而設計的
> Xcode
- 雖然整合較好,但是隻能做一些常用的簡單操作,複雜操作還要使用命令列
9. 學習網站
二. 掌握 - Git命令列演練-個人開發
0. 如何學習git指令
> githelp [子命令]
> 和學習SVN指令是一樣的,只不過git是通過使用指南的形式展示給使用者看(不能編輯的vim編輯器),使用q退出vim編輯器,按空格進入下一頁,ctrl + B 回到上一頁; /關鍵字進行搜尋
1. 初始化一個本地倉庫
> 原因: 管理原生代碼,修改上傳,版本回退
> 命令:git init
2. 配置倉庫
> 告訴git你是誰?(方便以後管理自己的程式碼)
原因: 追蹤修改記錄
命令: git configuser.name “Edison”
> 告訴git怎樣聯絡你?
原因: 多人合作開發時, 溝通交流
命令: git config user.email "[email protected]"
> 檢視配置資訊(.git-> config開啟)
命令: git config -l
- 全域性的配置:git config --global user.name edison
- git config --global user.email [email protected]
3. 個人開發演練
> 建立檔案並提交
命令:
touch main.c
git add .
gitcommit -m “註釋”
> 修改檔案並提交
命令:
git add .
gitcommit -m “註釋”
> 刪除檔案並提交
命令:
git rm person.h
gitcommit -m “註釋”
> 日誌檢視
命令:
git log
git reflog
> 版本回退
命令:
gitreset —-hard HEAD 重置到當前版本
gitreset —-hard HEAD^^ 重置到上上個版本
gitreset ——hard HEAD~2 重置到往上2個版本
gitreset —-hard 七位版本號 重置到指定版本::
4. 備註補充
1.檔案狀態(git status)
> 顏色含義
紅色: 代表被新增或者修改的檔案沒有被新增到暫緩區
綠色: 代表檔案在暫緩區,等待提交
> 版本號的含義
版本號是一個由SHA1生成的40位雜湊值
這樣做的目的是保證版本號的唯一
2.vim編輯器的使用:
命令模式:等待編輯命令輸入;所有輸入的內容都被當做命令來執行
插入模式:輸入的所有內容都被顯示,並被當做檔案內容處理
命令列模式:執行待定命令(儲存檔案並退出vim : wq ; 強制退出不儲存: q! )
3.日誌檢視配置
命令如下:
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"
4.配置別名
git config alias.st“status”
git config alias.ci“commit -m”
5.--global的作用
可以進行全域性配置,所有的版本庫共享此配置
檢視全域性配置(桌面前往->個人->.gitconfig
** 個人電腦上建議使用全域性配置**
三. 掌握 - Git命令列演練-團隊開發
團隊開發必須有一個共享庫,這樣成員之間才可以進行協作開發
0. 共享庫分類
> 本地共享庫(只能在本地面對面操作)
- 電腦資料夾/U盤/行動硬碟
> 遠端共享庫(可通過網路遠端操作)
- 自己搭建Git伺服器(**不建議**)
- 在Github上託管專案(**建議**)
Github網址(https://github.com); 公開專案免費, 私有專案收費
- 在OSChina上託管專案(**推薦**)
OSChina網址(https://git.oschina.net) 安全免費,在國內訪問速度快
1. 搭建本地共享庫
原因: 多人合作開發,程式碼共享
命令: git init —-bare
2. 經理初始化專案到本地共享庫
命令: git clone 原生代碼倉庫地址
3. 演示多人開發
> 建立資料夾manager,niuda
命令:
mkdir manager
mkdir niuda
> 分別進入到兩個資料夾從共享庫clone專案到本地
命令:
gitclone 原生代碼倉庫地址
gitclone 原生代碼倉庫地址
> 演練新增檔案同步
命令:
touch person.h
git add .
gitcommit -m “建立person.h”
git push
git pull
> 演練修改檔案同步
命令:
git add .
gitcommit -m “註釋”
git push
git pull
> 演練刪除檔案同步
命令:
git rm filename
gitcommit -m “註釋”
git push
git pull
> 演練衝突解決
命令:
git pull
> 演練忽略檔案
命令:
touch .gitignore
open.gitignore 加入忽略檔名
git add .
gitcommit -m “註釋”
.gitignore檔案配置規則
4. 備註筆記
> 關於忽略檔案
在真實開發中,配置.gitignore檔案, 去github裡面搜尋gitignore 選擇OC版本的,拷貝到本地倉庫即可,記得新增到本地版本庫
> 常見問題
fetchfirst 代表當前檔案過期,需要從遠端共享庫更新
git pull
四. 掌握 -Git-XCode演練-團隊開發
1. 搭建本地共享版本庫
命令: git init —-bare
2. 經理初始化專案到共享版本庫
** 注意: 新增忽略檔案,不然Xcode有可能會把沒必要的檔案提交**
** 必須在使用Xcode之前把忽略檔案新增進來, 因為Xcode建立工程時, 預設直接把所有檔案新增到暫緩區, 加進去之後忽略檔案對其就無效了**
3. 牛大,牛二使用Xcode 克隆專案
4. 演練新增檔案同步
5. 演練修改檔案同步
6. 演練刪除檔案同步
7. 演練衝突
五. 瞭解 -github的使用
1. 託管專案到github-HTTPS驗證
1.開啟github網站:[https://www.github.com]
2.註冊賬號(OneShunzi)
3.點選建立新倉庫[https://github.com/new]
4.填入專案名稱,描述等資訊
5.建立完成
6.可根據生成的版本庫地址進行克隆下來進行操作
2. 託管專案到github-SSH驗證
1.點選”個人” -> setting-> SSH keys -> Add SSH key
3. 怎樣將其他著名框架新增到我們的程式碼倉庫?
1.搜尋到對應的框架
2.點選fork
3.當專案被移到自己程式碼倉庫中,就可以根據地址克隆下來進行操作
** 注意:
你可以針對此框架進行任意修改,但是僅僅作用在你的本地倉庫中的副本,對原作者專案沒有任何影響.
如果想向原作者提建議,可以直接使用,pull request操作.
提交完成後,原作者可以在pull request中看到你的提交.至於是否採納,就是原作者的意願搜尋到對應的框架
六. 瞭解 -OSChina的使用
1. 託管專案到OSChina
1.開啟oschina網站:[https://git.oschina.net]
2.註冊賬號(OneShunzi)
3.點選建立新倉庫[https://git.oschina.net/projects/new]
4.填入專案名稱,描述等資訊
5.建立完成
6.可根據生成的版本庫地址進行克隆下來進行操作
2. 怎樣加入合作伙伴?
1.點選”管理”->專案成員管理->選擇成員許可權進行建立
2.或者直接只用SSH(以下是生成公鑰私鑰方法)
>部署公鑰允許以只讀的方式訪問專案,主要用於專案在生產伺服器的部署上,免去HTTP方式每次操作都要輸入密碼和
普通SSH方式擔心不小心修改專案程式碼的麻煩。
3. 怎樣將其他著名框架新增到我們的程式碼倉庫?
1.搜尋到對應的框架
2.點選fork
3.當專案被移到自己程式碼倉庫中,就可以根據地址克隆下來進行操作
** 注意:
你可以針對此框架進行任意修改,但是僅僅作用在你的本地倉庫中的副本,對原作者專案沒有任何影響.
如果想向原作者提建議,可以直接使用,pull request操作.
提交完成後,原作者可以在pull request中看到你的提交.至於是否採納,就是原作者的意願
七. 瞭解 - 新人伺服器搭建
1.新人伺服器搭建概念原因?
概念: 搭建一個臨時共享版本庫, 供新人專用
原因: 防止新人剛到時,搞亂伺服器上的專案
2.新建一個資料夾,newBee