X

Git Submodule 新增、使用 與 移除

Git Submodule 的新增、使用 與 移除,在此篇一起做整理。

於 Facebook 的 PHP SDK 就是將此用 Git Submodule 拉進來使用的,最近查詢才發現忘了寫,最糟糕的是,沒想到這次 Facebook SDK 是需要移除整個換新的 Repository,所以將新增 / 移除一起寫。

Git Submodule 新增、使用 與 移除

Git Submodule 新增

  • 語法:git submodule add <repository> [<path>]
  • 範例:git submodule add https://github.com/facebook/facebook-php-sdk-v4.git facebook-php-sdk

git submodule 新增後,會寫入下述兩個地方:

  • .git/config
  • .gitmodules

Git Submodule 詳細新增步驟

  1. git submodule add https://github.com/facebook/facebook-php-sdk-v4.git facebook-php-sdk # 需在 Project 根目錄 跑此命令,所以會如下述
  2. git status
    #       new file:   .gitmodules
    #       new file:   facebook-php-sdk
  3. cat .gitmodules # 此檔案會新增出來,記得要一起 commit 進去
    [submodule "lib/facebook-php-sdk"]
        path = lib/facebook-php-sdk
        url = https://github.com/facebook/facebook-php-sdk-v4
  4. git add .gitmodules
  5. git commit -a -m "first commit with submodule facebook sdk"
  6. git push
  7. git submodule init # 初始化,只有第一次要做,讓 git 認得有此 module (以後都做 update),不過以後每次都重複執行此行也沒關係
    Submodule 'lib/facebook-php-sdk' () registered for path 'lib/facebook-php-sdk'
  8. cat .git/config # 查看新增狀況
    [submodule "lib/facebook-php-sdk"]
        url = https://github.com/facebook/facebook-php-sdk-v4
  9. git submodule update # 以後都使用這個, 或者下述 git pull origin master
  10. cd lib/facebook-php-sdk
  11. git pull origin master
  12. git submodule status

Git Submodule 快速新增步驟

  1. git submodule add https://github.com/facebook/facebook-php-sdk-v4.git facebook-php-sdk # 需在 Project 根目錄 跑此命令,所以會如下述
  2. git add .gitmodules
  3. git commit -a -m "first commit with submodule facebook sdk"
  4. git submodule update
  5. cd lib/facebook-php-sdk/
  6. git pull origin master

Git Submodule 其它使用者更新步驟

當 Master 設定好後,其它使用者要拉下來,需要做下述步驟:

  1. git pull
  2. git submodule init # 初始化,只有第一次要做
  3. git submodule update # 以後都使用這個, 或者下述 git pull origin master
  4. cd lib/facebook-php-sdk/
  5. git pull origin master
  6. 到此即可

Git Submodule 更新 Script

上述更新步驟要簡化,可以使用此段語法(請自行修改):

  1. vim module-update.sh
    #!/bin/bash
    git submodule init
    git submodule update
    cd lib/facebook-php-sdk/
    git pull origin master
  2. chmod 755 ./module-update.sh

Git Submodule 移除

  1. git rm -fr pear/facebook-php-sdk/
  2. git rm .gitmodules
  3. git commit -m "Remove submodule" -a
  4. vi .git/config # 移除 facebook-php-sdk 那兩行

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post