使用 Git + Dropbox + SourceTree 做 Source Code Management
此篇文章主要針對有安裝 XCode 的 Mac 用戶。
Git
版本控管工具,作用類似 CVS、Subversion(簡 稱SVN),好處在於 Git 不像 CVS 及 SVN 是屬於集中式的版本控管工具,它採用分散式版本庫,即便連不上server,仍可以執行commit、rollback (rebase)等動作。加上 Dropbox 幫我們做檔案同步與共享,不需架一台 Git Server 也可多人同時開發。

與CVS, SVN不同的是,每次修改檔案後要上傳,都需要先 add ,之後才能commit。
寫給大家的Git教學:介紹git的源由、觀念及相關指令,想要對git有深入的瞭解可參考此份slide!
Dropbox
透過雲端儲存實現網際網路上的檔案同步,使用者可以儲存並共享檔案和資料夾。Dropbox for Mac 安裝網址。
共享專案方式為登入Dropbox,點選到該專案資料夾下,再點擊共享文件夾選項
之後輸入要共享對象的dropbox帳號(email)即可。
被共享的對象會收到Dropbox寄的一封email:
需開此email並點擊相關link,才能完成共享動作。
SourceTree
透過 GUI 介面操作,省去輸入繁瑣的 git 指令。
建立 Dropbox 的 Repository
裝完Dropbox for Mac後,在使用者帳號會有一個Dropbox資料夾,此資料夾下的檔案都會自動同步到雲端儲存空間。以下commad請在終端機執行:
建立 Git 使用的 repository (資料夾名稱不一定要命名為repository),若已有則略過
mkdir repository此步驟:cd ~/Dropbox-> 切換至Dropbox資料夾mkdir repository-> 建立repository資料夾cd repositorymkdir ${PROJECT}.git-> 建立project的git資料夾,${PROJECT}輸入專案名稱。cd ${PROJECT}.gitgit --bare init-> 將該資料夾初始化為git repository,即是git server端的資料,不存放原始檔案。
若出現git command not found則表示該電腦未安裝git command。可到Xcode的menu選Preferences,在Downloads那一頁的Components,Install 'Command Line Tools',裝完應該就可以使用git command了。新增 .gitignore 檔案(不執行版本控管的檔案)
先切換到專案路徑下 (2,3,4,5 都在原專案目錄下執行)
vi .gitignore-> 使用vi建立 .gitignore 檔案
將以下的檔案清單copy paste到vi畫面中(paste前記得先按i進入編輯模式),結束按:wq再Enter即可。#for Xcode
build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
*.xcworkspace
!default.xcworkspace
xcuserdata
profile
*.moved-aside
*.pyc
*~.nib/
*.perspective
.DS_Store將原專案commit
git init-> 初始專案git add .-> 加入目前資料夾(含子資料夾)的所有檔案git commit -m 'initial version'-> 提交目前程式至local端的repository,' '括起來的為此次commit的註解。建立Git Server link
git remote add dropbox file:///Users/${USER}/Dropbox/repository/${PROJECT_NAME}.git
${USER} 為Mac登入的帳號名稱,即終端機$前面到空白的這一段文字。
${PROJECT_NAME} 請填入專案名稱。git push dropbox master-> 將目前專案上傳至Dropbox資料夾
若是push出現fatal error,可編輯.git/config該檔案,檢視remote的url是否有key錯。setup configuration
git config branch.master.remote dropbox-> 設定主要分支的server名為dropboxgit config branch.master.merge master-> 設定merger後的分支為master
取得他人在Dropbox分享的專案
此command只需執行一次即可,之後透過SourceTree進行commit, push, merge等動作。
先切到要置放此專案的目錄下,之後執行:
git clone -o dropbox file:///Users/${USER}/Dropbox/${PROJECT_NAME}.git
他人共享的資料夾,預設會放在Dropbox目錄下,因為不需進到/Dropbox/repository/目錄。
clone 完成後,即可用Xcode開啟該project了。
SourceTree 操作簡介
設定user資料
啟動SourceTree後,在Menu的SourceTree->Preferences->General,勾選'Allow
SourceTree to modify your global …',並在Full Name及Email
Address輸入資料,這樣在SourceTree上面就可看到commit的人是誰了。
新增Project
回到Bookmarks視窗,點選最左邊的Add Repository
在project已存在的狀況下(自己建的project或是從Dropbox clone別人分享的project),選擇Add Working Copy
選取project存在路徑,按Add即可。SourceTree 功具列

- Commit
程式修改完畢,並Add完異動檔案後,commit 到 local repository。 - Checkout
從commit history中checkout特定的commit點的程式。 - Reset
將有異動的檔案回覆到之前的狀態(新增的檔案無法reset),可選擇單一檔案或全部有異動的檔案。 - Stash
隱藏所有的異動,並回覆到前一次的版本。stash之後,可在左側的STASHES欄位看到各個異動檔案diff的狀態。 - Add
將有異動及新增的檔案放到index區,準備commit。 - Remove
刪除檔案,並不再traking該檔案。 - Add/Remove
刪除不是透過Git Remove掉的已被刪除的檔案,並新增異動檔案到index區。 - Fetch
到remote端(若是用Dropbox,則是與Dropbox的檔案進行同步)抓取別人commit的檔案,並放在local端的repository。有時別人已push到Dropbox,但SourceTree的Pull卻未顯示,這時點按Fetch就對了。 - Pull
從remote端抓取更新檔(目前的檔案都必需是commit的狀態才能執行)。 - Push
將local端commit好的檔案傳送到remote端。 - Tag
將某一個已commit的狀態設定別名,如(上線版_1.0),**tag 名稱不能有空白**! - Terminal
開啟終端機,並切換到該專案目錄下。
- Commit
使用 Git + Dropbox + SourceTree 做 Source Code Management的更多相关文章
- Jekens Source Code Management None 源码管理没有Git
jekens安装完成后,在配置中Source Code Management没有Git的选项,只有none,搞了大半天,一直安装插件报错,网上找的各种文章均未能解决我的问题,多次尝试后终于解决了这个问 ...
- Tips for newbie to read source code
This post is first posted on my WeChat public account: GeekArtT Reading source code is always one bi ...
- akka cluster sharding source code 学习 (1/5) 替身模式
为了使一个项目支持集群,自己学习使用了 akka cluster 并在项目中实施了,从此,生活就变得有些痛苦.再配上 apache 做反向代理和负载均衡,debug 起来不要太酸爽.直到现在,我还对 ...
- Memcached source code analysis (threading model)--reference
Look under the start memcahced threading process memcached multi-threaded mainly by instantiating mu ...
- Top free and open source log management software
As mentioned in the previous post, in my quest to find an alternative to Kiwi Syslog, I looked at a ...
- Android Branch and master source code merge(patch)
Environment : Android 4.4.2 merge with Android 4.4.3(with other vendors source code) 1.确定你要merge 到 其 ...
- [Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128:
--------------------- 如需转载,转载请注明出处. --------------------- 今日发现所有IOS构建相关的job全部失败,并提示如下错误: ERROR: Erro ...
- HashMap source code view(1)
前言 HashMap source code view 类注释 Hash table based implementation of the Map interface. This implement ...
- Eclipse Error: The refactoring does not change any source code
最近在做android项目的过程中遇到这样一个问题,新增一个activity的时候添加不成,eclipse提示The refactoring does not change any source co ...
随机推荐
- div section article区分--20150227
div section article ,语义是从无到有,逐渐增强的.div 无任何语义,仅仅用作样式化或者脚本化的钩子(hook),对于一段主题性的内容,则就适用 section,而假如这段内容可以 ...
- CSS盒模型总结(一)
一.基本概念 盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版,盒模型的组成:content padding border margin 二.盒模型的分类 盒子模型有两种,分别是 ie ...
- C++系统学习一:基本数据类型和变量
程序语言 程序语言最基本的特征 整型.字符型等内置类型 变量,用来为对象命名 表达式和语句,操纵上述数据类型的具体值 if等控制结构 函数,定义可供随时调用的计算单元 程序语言的扩展 自定义数据类型 ...
- 【数学 裴蜀定理】bzoj2257: [Jsoi2009]瓶子和燃料
使gcd最大的trick Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy的飞船上共有 N ...
- Mac OS X下安装Vue脚手架(vue-cli)
前言 Vue作为前端三大框架(Angular,React,Vue)之一,号称是最简单,最容易上手的框架,同时也是行内的大趋势,还可以用来开发最火的小程序.具有开发快,双向数据流等特点,有些人认为Vue ...
- 浅谈Session与Cookie的关系
一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服务端一段时 ...
- iOS UITextView点击事件处理
自定义一个UITextView UITextView 的selectedRange 影响 selectedTextRange 改变前者可影响后者 self.selectedRange -->se ...
- LeetCode(99) Recover Binary Search Tree
题目 Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without chang ...
- PAT Basic 1066
1066 图像过滤 图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来.现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换. 输入格式: 输入在第一 ...
- PC上测试移动端网站和模拟手机浏览器
一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面 ...