1. 程式人生 > >開發中的程式碼管理工具熟知

開發中的程式碼管理工具熟知

. 掌握 - 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會在每一個目錄置放一個.svngit只會在根目錄擁有一個.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