Git Submodule 的新增、使用 與 移除,在此篇一起做整理。
於 Facebook 的 PHP SDK 就是將此用 Git Submodule 拉進來使用的,最近查詢才發現忘了寫,最糟糕的是,沒想到這次 Facebook SDK 是需要移除整個換新的 Repository,所以將新增 / 移除一起寫。
Git Submodule 新增、使用 與 移除
- 教學文件:Git - Submodules
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 詳細新增步驟
- git submodule add https://github.com/facebook/facebook-php-sdk-v4.git facebook-php-sdk # 需在 Project 根目錄 跑此命令,所以會如下述
- git status
# new file: .gitmodules # new file: facebook-php-sdk
- cat .gitmodules # 此檔案會新增出來,記得要一起 commit 進去
[submodule "lib/facebook-php-sdk"] path = lib/facebook-php-sdk url = https://github.com/facebook/facebook-php-sdk-v4
- git add .gitmodules
- git commit -a -m "first commit with submodule facebook sdk"
- git push
- git submodule init # 初始化,只有第一次要做,讓 git 認得有此 module (以後都做 update),不過以後每次都重複執行此行也沒關係
Submodule 'lib/facebook-php-sdk' () registered for path 'lib/facebook-php-sdk' - cat .git/config # 查看新增狀況
[submodule "lib/facebook-php-sdk"] url = https://github.com/facebook/facebook-php-sdk-v4
- git submodule update # 以後都使用這個, 或者下述 git pull origin master
- cd lib/facebook-php-sdk
- git pull origin master
- git submodule status
Git Submodule 快速新增步驟
- git submodule add https://github.com/facebook/facebook-php-sdk-v4.git facebook-php-sdk # 需在 Project 根目錄 跑此命令,所以會如下述
- git add .gitmodules
- git commit -a -m "first commit with submodule facebook sdk"
- git submodule update
- cd lib/facebook-php-sdk/
- git pull origin master
Git Submodule 其它使用者更新步驟
當 Master 設定好後,其它使用者要拉下來,需要做下述步驟:
- git pull
- git submodule init # 初始化,只有第一次要做
- git submodule update # 以後都使用這個, 或者下述 git pull origin master
- cd lib/facebook-php-sdk/
- git pull origin master
- 到此即可
Git Submodule 更新 Script
上述更新步驟要簡化,可以使用此段語法(請自行修改):
- vim module-update.sh
#!/bin/bash git submodule init git submodule update cd lib/facebook-php-sdk/ git pull origin master
- chmod 755 ./module-update.sh
Git Submodule 移除
- git rm -fr pear/facebook-php-sdk/
- git rm .gitmodules
- git commit -m "Remove submodule" -a
- vi .git/config # 移除 facebook-php-sdk 那兩行