此篇文章主要針對有安裝 XCode 的 Mac 用戶。

Git

版本控管工具,作用類似 CVSSubversion(簡 稱SVN),好處在於 Git 不像 CVS 及 SVN 是屬於集中式的版本控管工具,它採用分散式版本庫,即便連不上server,仍可以執行commit、rollback (rebase)等動作。加上 Dropbox 幫我們做檔案同步與共享,不需架一台 Git Server 也可多人同時開發。

Git Workflow

與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請在終端機執行:

  1. 建立 Git 使用的 repository (資料夾名稱不一定要命名為repository),若已有則略過mkdir repository此步驟:

    cd ~/Dropbox -> 切換至Dropbox資料夾
    mkdir repository -> 建立repository資料夾
    cd repository
    mkdir ${PROJECT}.git -> 建立project的git資料夾,${PROJECT}輸入專案名稱。
    cd ${PROJECT}.git
    git --bare init -> 將該資料夾初始化為git repository,即是git server端的資料,不存放原始檔案。
    若出現git command not found則表示該電腦未安裝git command。可到Xcode的menu選Preferences,在Downloads那一頁的Components,Install 'Command Line Tools',裝完應該就可以使用git command了。

  2. 新增 .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
  3. 將原專案commit

    git init -> 初始專案
    git add . -> 加入目前資料夾(含子資料夾)的所有檔案
    git commit -m 'initial version' -> 提交目前程式至local端的repository,' '括起來的為此次commit的註解。

  4. 建立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錯。

  5. setup configuration

    git config branch.master.remote dropbox -> 設定主要分支的server名為dropbox
    git 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
        開啟終端機,並切換到該專案目錄下。

使用 Git + Dropbox + SourceTree 做 Source Code Management的更多相关文章

  1. Jekens Source Code Management None 源码管理没有Git

    jekens安装完成后,在配置中Source Code Management没有Git的选项,只有none,搞了大半天,一直安装插件报错,网上找的各种文章均未能解决我的问题,多次尝试后终于解决了这个问 ...

  2. 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 ...

  3. akka cluster sharding source code 学习 (1/5) 替身模式

    为了使一个项目支持集群,自己学习使用了 akka cluster 并在项目中实施了,从此,生活就变得有些痛苦.再配上 apache 做反向代理和负载均衡,debug 起来不要太酸爽.直到现在,我还对 ...

  4. Memcached source code analysis (threading model)--reference

    Look under the start memcahced threading process memcached multi-threaded mainly by instantiating mu ...

  5. 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 ...

  6. 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 到 其 ...

  7. [Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128:

    --------------------- 如需转载,转载请注明出处. --------------------- 今日发现所有IOS构建相关的job全部失败,并提示如下错误: ERROR: Erro ...

  8. HashMap source code view(1)

    前言 HashMap source code view 类注释 Hash table based implementation of the Map interface. This implement ...

  9. Eclipse Error: The refactoring does not change any source code

    最近在做android项目的过程中遇到这样一个问题,新增一个activity的时候添加不成,eclipse提示The refactoring does not change any source co ...

随机推荐

  1. Javaweb开发之路

    本文作者:DavidLin 欢迎转载,但请保留文章原始出处→_→ 本文地址:http://www.cnblogs.com/univeryinli/p/programming-skill-yinli.h ...

  2. IE6,7,8,9还有火狐浏览器的兼容

    /*FF.Opear等支持Web标准的浏览器*/#header {        margin-top: 23px;        margin-bottom: 23px;}/*IE6浏览器*/*ht ...

  3. 经典DP问题--poj1088滑雪

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  4. 几条sql语句(exists)

    通常exists后的子查询是需要和外面的表建立关联关系的,如 select count(*) from a where exists (select 'x' from b where a.id = b ...

  5. Tomcat下部署PHP

    php线程安全版和非线程安全版本区别 1.windows + IIS + FastCGI :使用非线程安全版本. 解释: 以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单 ...

  6. vue 的 scroller 使用

    一 安装 使用npm 安装npm install vue-scroller -d 二 引入 import VueScroller from "vue-scroller" Vue.u ...

  7. WEB框架——WEB框架本质

    武sir http://www.cnblogs.com/wupeiqi/articles/5237672.html

  8. 汇编CMOS

    汇编 端口 端口 前面讲过,各种存储器都和CPU的地址线.数据线.控制线相连.CPU在操控它们的时候,把它们都当作内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑器我们称其为内存 ...

  9. pytorch中torch.unsqueeze()函数与np.expand_dims()

    numpy.expand_dims(a, axis) Expand the shape of an array. Insert a new axis that will appear at the a ...

  10. ansible部署

    ansible的特性:基于Python语言实现,由paramiko,PyYAML和jinjia2三个关键模块 部署简单,agentless 默认使用ssh协议        (1) 基于秘钥认证方式  ...