Synch Commands
CLONE (copy) remote REPO to my local directory
if you have set up "SSH Public Keys" on the website of your GIT provider (XP-dev.com, github.com) you can use ssh:// without providing user name & password
git clone ssh://my_user_name@subdomain.repositoryhosting.com/company/MyApplication.git
if you did NOT provide SSH you will use https:/// with user name and password
Make sure you are in a correct directory (.git files should be in the that folder)
git clone https://subdomain.repositoryhosting.com/company/MyApplication.git
Make sure you are in a correct directory (.git files should be in the that folder)
pwd
Check that you are working on the correct remote repo
git config --get remote.origin.url
Get update of all remote changes, this does not change the workspace code
git fetch
Add all changed LOCAL files to be managed by git
git add --all
Commit all local changes to LOCAL git repo with a message (change the message as needed)
git commit -m "My good explanation of what I am committing here."
Take remote changes at merge them with you local code, your new changes will not be erased
git rebase
Same as git fetch && git rebase together, but good only when you don't have your our own commits
git pull
Send your local committed changes to remove server
git push
Make sure that you get this message "Your branch is up-to-date with 'origin/XYZ'."
Show differences
git status
Show differences
$ git diff HEAD FETCH_HEAD
Branch Operations
Switch to an existing branch
$ git checkout develop
Create a new branch named thrift
$ git checkout -b thrift
Delete an existing branch
$ git branch -D thrift
Resetting - removing local changes
reset hard to previous commit
$ git reset --hard 9a5xxx317
Reset to REMOTE SERVER state, your local changes will be destroyed
$ git reset --hard FETCH_HEAD
$ git clean -f -d
$ git status
On branch master
Your branch is behind 'origin/master' by 4 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working directory clean
$ git rebase
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Working with Submodules
In this tutorial you will see examples of how to work with modules in GTI. It is a good practice for multiple projects to re-use common libraries of code, for example model library, APIs, utility classes, etc.
List Submodules
$ git submodule
Add submodule to an existing projectBefore I start, I like to check what is the repository URL of the PARENT project, your submodules will likely have similar URL:
$ git config --get remote.origin.url
ssh://git@xyz.repositoryhosting.com/xyz/parent_project_name.git
In your (parent) project clone another project as submodule..$ git submodule add --force ssh://git@xyz.repositoryhosting.com/xyz/submodule_name.git module/submodule_name
Cloning into 'module/submodule_name'...
remote: Counting objects: 47, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 47 (delta 6), reused 47 (delta 6)
Receiving objects: 100% (47/47), 1.85 MiB | 715.00 KiB/s, done.
Resolving deltas: 100% (6/6), done.
Checking connectivity... done.
If you checked out a base project and your submodule is empty, you need to initialize your submodules. The command below will bring the remote code to your local folders recursively for each submodule you have.$ git submodule update -f --init --recursive
If the code you want in the submodule is in different branch then you have to checkout that branch$ git submodule foreach --recursive git checkout branch_name
Finally you can do your normal PULL, or FETCH and REBASE$ git submodule foreach --recursive git pull
Remove submodule
List currently registered submodules$ git submodule
$ git submodule deinit -f module/myOldModule
$ git rm -rf module/myOldModule
$ rm -rf module/myOldModule
Get original remote REPO URL
git config --get remote.origin.url