天天看點

在公司中怎樣使用SVN、Git在公司進行項目開發,使用SVN,Git是必須的,是以今天詳細總結一下平時使用Git和SVN的基本使用和一下技巧,供大家參考學習。如有錯誤,請大家指正!

在公司進行項目開發,使用SVN,Git是必須的,是以今天詳細總結一下平時使用Git和SVN的基本使用和一下技巧,供大家參考學習。如有錯誤,請大家指正!

一 、 SVN

svn基本操作:[插入]

伺服器端和用戶端的示意圖:[插入]

使用環境

要想利用SVN管理源代碼,必須得有2套環境

伺服器 用于存儲用戶端上傳的源代碼 可以在Windows上安裝VisualSVN Server 大部分情況下,公司的開發人員不必親自搭建SVN伺服器

用戶端 上傳本地的源代碼到伺服器,或者更新伺服器的代碼到本地,保持同步 可以在Mac上使用指令行、Versions、Cornerstone 開發人員就屬于用戶端這個角色

SVN用戶端指令

svn checkout :下載下傳伺服器的代碼到本地 (簡寫svn co) svn commit :将改動的檔案送出到伺服器(簡寫svn ci) svn update :更新伺服器的代碼到本地 (簡寫svn up) svn add :向本地的版本控制庫中添加新檔案 svn delete、svn remove :從本地的版本控制庫中删除檔案(簡寫svndel、svnrm) svn move:移動檔案或者目錄或檔案更名 svnmkdir:建立納入版本控制下的新目錄 svn revert :撤銷之前的一切修改 svn merge :将兩個版本之間的差異合并到目前檔案 svn info :檢視檔案的詳細資訊 svndiff :檢視不同版本的差別 svnlog :檢視日志資訊 svn list :列出版本庫下的檔案和目錄清單 svn status :檢視檔案狀态(簡寫svnst) svn help :擷取幫助資訊(比如svnhelpci) svn lock :加鎖 svn unlock :解鎖

SVN項目導出:

将項目檢出(下載下傳) 至本地:

svn checkout URL [PATH] 

svn co URL [PATH];

注意:這裡的中括号[]代表可選(可以省略)

示例

svn checkout  https://192.168.1.106/svn/Weibo//Users/user/Documents/workspace

藍色 代表的是:代碼倉庫的遠端位址 橙色 代表的是:将代碼下載下傳到本地的哪個路徑 如果省略 橙色 的路徑,就下載下傳到指令行目前所在的路徑

送出操作: 将改動 過的檔案 送出至 伺服器 svn commit   -m " 注釋 "  [PATH] svn ci   -m" 注釋 "  [PATH]

注意:一定要養成寫注釋的良好習慣

示例

svn commit  -m “修改了User.m檔案” /Users/user/Desktop/workspace/branches/User.m

橙色 代表的是:送出哪個檔案到伺服器 如果省略 橙色 的路徑,就将指令行所在路徑中所有改動過的檔案送出到伺服器

添加操作 : 送出一個建立的檔案到伺服器,需要 2 個步驟 1、 添加建立的檔案到本地的 版本控制 庫中: svn add 2、 送出剛才的添加 操作 到伺服器 : svn commit

向 本地的 版本 控制庫 中添加一個新檔案 1、 svn add PAT H 示例

svn add /Users/user/Desktop/workspace/Weibo/branches/User.m

橙色 代表的是:添加哪個檔案到 版本控制 庫中

删除 删除伺服器上的某個檔案,需要做 2 個步驟 1、 将檔案從本地的版本控制庫中移除: svn d elete 、 svn remove 2、 送出剛才的删除操作到伺服器: svn commit . –m “ 注釋 ” 3、 将檔案從本地的版本控制庫中移除 svn delete PAT H 示例

svn delete /Users/user/Desktop/workspace/Weibo/branches/User.m

橙色 代表的是:将哪個檔案從 版本控制 庫中移除

更新 将伺服器的最新代碼更新到本地 svn update [ PAT H ]    . 目前目錄

示例

svn update /Users/mj/Desktop/workspace/Weibo/branches/User.m

橙色 代表的是:更新哪個檔案的内容 如果省略 橙色 的路徑,就更新指令行所在路徑的所有内容 将檔案恢複至某個版本 svn update -r 版本号 [ PAT H]

常見問題總結

1、 去到公司的第一天,下載下傳公司的代碼到電腦上 svn checkout

2、 修改了某個早已存在的舊檔案,然後送出到伺服器 svn commit –m ‘ 注釋 ’

3、 送出一個自己建立的檔案到伺服器 svn add -> svn commit

4、 删除一個早已存在的舊檔案,然後同步到伺服器上 svn delete -> svn commit 5、 将其他同僚送出的新代碼更新到自己電腦上 svn update

6、 不小心寫錯了 很多東西 ,想 撤銷所寫的東西 ( 還未把修改送出到伺服器 ) svn revert      xcode   discard changes 7、 不小心 删錯了檔案 ,想 把檔案恢複回來 ( 還未把删除送出到伺服器 ) svn revert   x code   discard changes

8、 不小心寫錯了 很多東西 ,想 撤銷所寫的東西 ( 已經 把修改送出到伺服器 ) svn update -r 版本号 9、 不小心 删錯了檔案 ,想 把檔案恢複回來 ( 已經把删除送出到伺服器 ) svn update -r 版本号

注意!!!

注意

. svn這個隐藏目錄記錄着非常關鍵的資訊 千萬不要手工修改或删除這個 . svn 隐藏目錄和裡面的檔案!否則将會導緻本地的工作副本被破壞,無法再進行操作 defaults write com.apple.finder AppleShowAllFiles -bool true

演練步驟 ……

1.項目經理準備初期代碼 2.LNJ和Jonathan合力完成V1.0的開發工作 3.為完成後的V1.0建立Tags标簽,注意檔案夾的層次 4.接收到Bug報告,LNJ停止手頭工作并備份 5.經理負責建立修訂分支,并通知LNJ去解決 6.LNJ從修訂分支CheckoutV1.0的版本,并開始修訂錯誤 7.LNJ修訂完成後通知經理 8.經理确認之後,将修訂内容整合到2.0開發主線 9.經理建立V1.1标簽 10.LNJ繼續開發工作...

使用SVN我們應該

1. 經常更新 :降低沖突的可能性 2. 送出前需在本機測試通過 :降低将問題代碼傳到版本庫 3. 送出時一定寫備注 ( 注釋 ) :友善其他員工檢視和自己以後回顧 4. 對于不需要送出的檔案不要送出到版本庫

提示 1. 每次修改之前最好先更新 2. 每天下班前送出當天運作通過的代碼 3. 每天上班第一件事情更新前一天的代碼

二 、 Git

簡介:

git 是一款開源的 分布式 版本控制工具 在世界上所有的分布式版本控制工具中, git 是最快、最簡單、最流行的

git的起源 作者是 Linux 之父: Linus Benedict Torvalds 當初開發 git 僅僅是為了輔助 Linux 核心的開發(管理源代碼)

git的現狀 在國外已經非常普及,國内并未普及(在慢慢普及) 越來越多的開源項目已經轉移到 git

git和SVN的簡單對比

速度 在很多情況下,git的速度遠遠比SVN快

結構 SVN是集中式管理,git是分布式管理

其他 SVN使用分支比較笨拙,git可以輕松擁有無限個分支 SVN必須聯網才能正常工作,git支援本地版本控制工作 舊版本的SVN會在每一個目錄置放一個.svn,git隻會在根目錄擁有一個.git git的工作流程

[插入]

跟SVN一樣,你可以通過指令行敲指令或者圖形界面用戶端使用git 在Mac上,比較好用的git圖形界面用戶端有 SourceTree 下載下傳位址:http://www.sourcetreeapp.com/download/

GitHub 下載下傳位址:https://mac.github.com 不過它是專門為GitHub網站而設計的

git常用指令

git help:git指令幫助手冊 檢視其他指令的做法:githelp 其他指令

git config:git的配置資訊相關(修改的是.git/config檔案) 配置使用者名:gitconfig“user.name”使用者名(用于跟蹤修改記錄) 配置郵箱:gitconfig“user.email”郵箱(用于多人開發間的溝通) 檢視配置資訊:gitconfig–l 編輯配置資訊:gitconfig–e(用vim編輯,:wq是退出vim編輯器) 設定指令的别名:gitconfig alias.别名原指令名稱 設定帶參數指令的别名:gitconfig alias.别名“原指令名稱 參數” 将此設定應用到整個系統中:gitconfig ––gloabal

git status :查檔案的狀态 檢視某個檔案的狀态: git status 檔案名 檢視目前路徑所有檔案的狀态: git status

git log:檢視檔案的修改日志 檢視某個檔案的修改日志: git log 檔案名 檢視目前路徑所有檔案的修改日志: git log 用一行的方式檢視簡單的日志資訊: git log ––pretty=oneline 檢視最近的N次修改: git log –N(N是一個整數)

git diff:檢視檔案最新改動的地方 檢視某個檔案的最新改動的地方: git diff 檔案名 檢視目前路徑所有檔案最新改動的地方: git diff

git init :初始化一個 空 的 本地 倉庫, 生成一個 .git 目錄 ,用于維護版本資訊 在目前路徑初始化倉庫: git init 在其他路徑初始化倉庫: git init 倉庫路徑

git add :将 工作區 的檔案儲存到 暫緩區 儲存某個檔案到暫緩區: git add 檔案名 儲存目前路徑的所有檔案到暫緩區: git add . (注意,最後是一個點 . )

git commit :将 暫緩區 的檔案送出到 目前分支 送出某個檔案到分支: git commit -m ” 注釋 ” 檔案名 儲存目前路徑的所有檔案到分支: git commit -m ” 注釋 ” 

git reset :版本回退(建議 加上 ––hard 參數, git 支援無限次後悔) 回退到上一個版本: git reset ––hard HEAD^ 回退到上上一個版本: git reset ––hard HEAD^^ 回退到上 N 個版本: git reset ––hard HEAD~N ( N 是一個整數) 回退到任意一個版本: git reset ––hard 版本号 (版本号用 7 位即可)

git reflog :檢視指令使用記錄(能夠檢視所有的版本号)

git rm :删除檔案(删完之後要進行 commit 操作,才能同步到版本庫)

git clone :下載下傳遠端倉庫到本地 下載下傳遠端倉庫到目前路徑: git clone 倉庫的 URL 下載下傳遠端倉庫到特定路徑: git clone 倉庫的 URL 存放倉庫的路徑

git pull :下載下傳遠端倉庫的最新資訊到本地倉庫

git push :将本地的倉庫資訊推送到遠端倉庫

工作原理

如果想了解 git 的工作原理,有幾個核心概念必須知道 工作區( Working Directory ) :倉庫檔案夾裡除 .git 目錄 以外的内容

版本庫( Repository ) : .git 目錄 ,用于存儲記錄版本資訊 暫緩區( stage ) 分支( master ): git 自動建立的第一個分支 HEAD 指針:用于指向目前分支

git add 和 git commit 的原理 git add :把檔案修改添加到暫存區 git commit :把暫存區的所有内容送出到目前分支 [插入]

搭建GitHub遠端倉庫 – 配置SSH Key 1、注冊一個 GitHub 帳号: https://github.com 2、 打開“ Account Settings ” 3、 點選“ SSH keys ” 4、 配置 Mac 的 SSH Key 的公鑰(用于限制送出) 5、 在 Mac 上生成 SSH Key (在終端輸入下面指令) cd ~/.ssh ssh-keygen -t rsa -C"你的郵箱位址” 6、 然後一直敲回車

7、 然後就會在~/.ssh 目錄下生成 SSK Key 的 秘鑰對 id_rsa :私鑰,不可洩露 id_rsa.pub :公鑰,可以公開( 将這個檔案的内容粘貼到 GitHub 上 ) 8、 利用 cat 指令可以檢視檔案的内容 cat id_rsa.pub

9、然後建立自己的倉庫,利用上述的操作指令,就可以進行多人團隊開發了!

SVN與Git的基本操作就說這麼多了!大家如果有問題,歡迎提問!