These instructions assume that you've created your application or website on your home computer, and then used Git to create a local repository.
The following steps describe how to push your local Git repository to your DreamHost server. In this way, you can develop your website on your home computer and push the changes to your live DreamHost website.
Pushing from Linux or Mac OS X
- On your local computer, navigate to your user's ~/.ssh directory:
[local ~]$ cd ~/.ssh
[local ~]$ mkdir ~/.ssh
- Set up SSH keys by running the following command:
[local ~]$ ssh-keygen -t rsa -b 4096 -C "DreamHost Git repo"
- Enter a name for the file when prompted, such as dreamhost-git-key.
- When prompted to enter a password, click Enter twice to skip.
- Two new files are created in your user's .ssh directory:
[local ~]$ cd ~/.ssh [local ~]$ ls -la dreamhost-git-key dreamhost-git-key.pub
- Use the following instructions to copy your public key into your DreamHost server's authorized_keys file.
- If you're using Linux:
[local ~]$ ssh-copy-id -i ~/.ssh/dreamhost-git-key.pub firstname.lastname@example.org
- If you're using Mac OS X (also works with Linux):
[local ~]$ cat ~/.ssh/dreamhost-git-key.pub | ssh email@example.com "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
You may receive the following error when running this command:
mkdir: cannot create directory `/home/username/.ssh': File exists
This simply means the /.ssh directory already exists on the web server. If you see this, remove the portion of the command that creates the directory and run again. For example:
[local ~]$ cat ~/.ssh/dreamhost-git-key.pub | ssh firstname.lastname@example.org "cat >> ~/.ssh/authorized_keys"
- Log into your DreamHost server via SSH:
[local ~]$ ssh email@example.com
If you receive an error when attempting to log in, you may need to use ssh-agent. See the following article for more information:
- Confirm your key has been added to the DreamHost server by running the following (this should output your key):
[server]$ cat ~/.ssh/authorized_keys
- Create a new directory for your new remote repository on your DreamHost server. If this code is meant to replace your existing website, you could name it the same as your website ending in .git.
Since this is a remote repository and not a working repository, the directory name you create must end with .git. You can then checkout this repository in the future to work on it.
[server]$ cd ~ [server]$ mkdir example.com.git [server]$ cd ~/example.com.git [server]$ git init --bare [server]$ exit
- Navigate to your git repository on your local computer, and then push to the remote repository on your DreamHost server. Make sure to change user and server to your actual DreamHost username and servername:
[local ~]$ git remote add dreamhost ssh://firstname.lastname@example.org/~/example.com.git [local ~]$ git push -u dreamhost master
- You should see the following response:
Counting objects: 3, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 200 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://email@example.com/~/example.com.git * [new branch] master -> master
How can I confirm my repository was correctly pushed to my DreamHost server?
If you run git status in the ~/example.com.git directory, the following error appears:
[server]$ git status fatal: This operation must be run in a work tree
This is because it's a 'bare' repository, not a working directory you can use. You could clone this remote repository into a working Git repository. This allows you to view the files that were pushed to the server.
- Log into your DreamHost server via SSH.
- Clone the repo to a new location by running the following in your user's directory:
[server]$ mkdir ~/cloned.example.com.git [server]$ git clone ~/example.com.git ~/cloned.example.com.git [server]$ cd ~/cloned.example.com.git [server]$ ls -la
- This cloned directory now contains all the files you pushed from your local machine.
How can I use Git for web development?
View the following article for instructions on how to push changes on your local computer to your live website.