= subtree-merge =
See http://help.github.com/subtree-merge/
For instance
:	git remote add -f ewf_wiki https://github.com/EiffelWebFramework/EWF.wiki.git
:	git merge -s ours --no-commit ewf_wiki/master
:	git read-tree --prefix=doc/wiki/ -u ewf_wiki/master
:	git commit -m "Added subtree merged in doc/wiki"


Update
:	git pull -X subtree=doc/wiki ewf_wiki master
:	git pull -X subtree=contrib/ise_library/cURL ewf_curl master
:	git pull -X subtree=contrib/library/text/parser/json ewf_json master
:	git pull -X subtree=contrib/library/network/server/nino ewf_nino master

Reconnect subtree from a cloned repository
- doc/wiki
  git remote add -f ewf_wiki https://github.com/EiffelWebFramework/EWF.wiki.git
  git merge -s ours --no-commit --squash ewf_wiki/master
  git pull -X subtree=doc/wiki ewf_wiki master

- contrib/ise_library/cURL
  git remote add -f ewf_curl https://github.com/EiffelSoftware/mirror-Eiffel-cURL.git
  git merge -s ours --no-commit --squash ewf_curl/master
  git pull -X subtree=contrib/ise_library/cURL ewf_curl master

- contrib/library/text/parser/json
  git remote add -f ewf_json https://github.com/eiffelhub/json.git
  git merge -s ours --no-commit --squash ewf_json/master
  git pull -X subtree=contrib/library/text/parser/json ewf_json master

- contrib/library/network/server/nino
  git remote add -f ewf_nino  https://github.com/Eiffel-World/EiffelWebNino.git
  git merge -s ours --no-commit --squash ewf_nino/master
  git pull -X subtree=contrib/library/network/server/nino ewf_nino master

When there are troubles ... to pull subtree from a cloned repository
  git remote add -f ewf_nino  https://github.com/Eiffel-World/EiffelWebNino.git
  git merge -s ours --no-commit --squash ewf_nino/master
  git checkout ewf_nino/master -b ewf_nino
  git pull ewf_nino master
  git checkout master
  git merge --squash -s subtree --no-commit ewf_nino/master

Note ... even if git is working great also on Windows
It might occurs that handling the subtree pulling fails on Windows, and works
on Linux. So I would advice to use Linux to manipulate those subtree
operation.


= remove git submodule =
1. Delete the relevant section from the .gitmodules file.
2. Delete the relevant section from .git/config.
3. Run git rm --cached path_to_submodule (no trailing slash).
4. Commit and delete the now untracked submodule files.

Ex:
:	vi .gitmodules
:	vi .git/config
:	git rm --cached doc/wiki
:	git commit -m "Removed submodule doc/wiki"

= Remove remote tag =
:	git pull # to marge changes from others
:	git tag -d v0.1 # delete the tag
:	git push origin :refs/tags/v0.1 # this remove tag from remote repository
:	git tag -a v0.1 "First official version" # this mark the most recent commit
:	git push origin v0.1 # push a new tag position to remote repository

= git branches and remote =
* git push origin my_branch	#push local my_branch to the remote "origin"
* git push origin :my_branch #delete remote branch "my_branch" from "origin"
* git branch -d my_branch #delete local branch "my_branch"

* Then from another local repository, you can get this new branch using
: git fetch origin
: git checkout --track origin/my_branch -b my_branch
