How to use Git to with a Divio project¶
Your Divio project is a Git repository, offering several advantages to the developer - fine-grained revision control, excellent collaboration options, easy export and replication.
We provide Git hosting by default. Our server is
git.divio.com. You can also use an external Git provider.
By default, we use the branch
develop, but you can specify the Git branches to be used by each environment.
You will need to set up your public key on our Control Panel if you use our Git server.
Certain conditions can cause deployment errors when the Control Panel tries to read the Git repository. These will
typically appear in the deployment log with an exception from
pygit2, such as:
Traceback (most recent call last): [...] File "/usr/local/lib/python3.6/site-packages/pygit2/repository.py", line 131, in __getitem__ raise KeyError(key) KeyError: abaddeed2d00ad47a9bb82db969707a21dead81ed
This can be caused by:
- an empty directory committed to the repository (remove it or add a file to it)
- a Git submodule included in the repository (remove it)
- files containing mixed line endings, if the
.gitattributesconfiguration includes an instruction to resolve them (remove
* text=autoif it appears in
Git with the Divio app or Divio shell¶
If you use the Divio app or the Divio Shell, SSH keys to our Git server will be set up for you.
The Divio app, our desktop application for project management, also uses Git behind the scenes for its code Upload and Download operations.
Basic Git operations¶
It’s beyond the scope of this documentation to provide a guide to Git, but to get you started, the basic operations you will need are described here.
Push your changes to the Cloud¶
If you have made some local changes and want to push (i.e. upload) them to the Cloud, the basic steps you need are:
git statusto see the changed files
git add <file1> <file2>(etc) to stage the changes (alternatively, you can do
git add .to stage everything)
git statusto make sure everything has been staged
git commit -m "<your commit message>"to commit the changes (provide a meaningful message for your own benefit)
git push origin developto push your local changes to the
origin(i.e. our server)
Pull changes from the Cloud¶
git pullwill pull fetch and merge any changes that have been made on the Cloud