Git Remote
- Any machine can act as a git remote. Generally git remote will have a daemon which handles communication, user management. Git is commonly installed on all nodes.
- Git Remote can be installed on servers (self-hosting.)
| Tool |
Type |
Highlights |
Official Website |
| Plain Git over SSH |
Lightweight |
No UI, simple git init --bare setup, push/pull over SSH. |
Git SCM |
| Gitolite |
Lightweight |
Access control + SSH key management on top of bare repos. |
Gitolite |
| Gitea |
Web-based |
Lightweight, GitHub-like UI, issues, wiki, CI/CD integration. |
Gitea |
| Forgejo (Gitea fork) |
Web-based |
Community-driven fork of Gitea, long-term support. |
Forgejo |
| GitLab CE (Community Edition) |
Web-based / Enterprise |
Full DevOps: CI/CD, project mgmt, code review, pipelines. |
GitLab CE |
| Phabricator (archived) |
Web-based |
Code review, tasks, wiki. Archived but still usable. |
Phabricator (archived) |
| SourceHut |
Web-based |
Minimalist, email workflows, CI. Scriptable. |
SourceHut |
| GitHub Enterprise Server |
Enterprise |
On-prem GitHub with enterprise features. |
GitHub Enterprise |
| Bitbucket Data Center |
Enterprise |
Atlassian’s self-hosted Git solution, integrates with Jira. |
Bitbucket Data Center |
- Popular remotes of Git are cloud hosted or Git as a service.
| Provider |
Type |
Highlights |
Official Website |
| GitHub |
Cloud SaaS |
Most popular; public/private repos, Actions (CI/CD), marketplace, huge community. |
GitHub |
| GitLab.com |
Cloud SaaS |
Full DevOps suite: repos, CI/CD, project mgmt, Kubernetes integration. |
GitLab |
| Bitbucket Cloud |
Cloud SaaS |
By Atlassian; integrates tightly with Jira/Trello. |
Bitbucket |
| SourceHut (Hosted) |
Cloud SaaS |
Minimalist; email workflows, CI, issue tracking. |
SourceHut |
| AWS CodeCommit |
Cloud (AWS) |
Fully managed private Git repos on AWS, integrates with CodePipeline & IAM. |
AWS CodeCommit |
| Azure Repos |
Cloud (Azure DevOps) |
Unlimited private repos, tight integration with Azure DevOps services. |
Azure Repos |
| Google Cloud Source Repositories |
Cloud (GCP) |
Private Git repos with Google Cloud integration. |
Cloud Source Repositories |
Lets create our first git remote repo
Direction: First we will create a local repo then remote repo
- We have created a local repo and created a commit
- Lets use github: The largest and most popular git remote repo which gives unlimited public and private repos for free.
- Github allows to communicate over
- To add a connection between local and remote
git remote add <conn-name> <url>
- Generally the default connection name used is
origin
git remote add origin https://github.com/dummyrepos/first_from_local.git
git remote -v
git config --list
- We have one commit in main branch locally, lets send those commits to remote (push)
git push <connection-name> <branch-name>

Direction: First we will create a remote repo then local
- Create a remote repo
- Clone refers to an operation where you have remote but no equivalent local repo on your system.
git clone <url>
# it creates a new folder
- Clone create a new folder with working tree and local repo. It also sets the upstream for default branch and default connection will be origin.
Set up ssh keys on github
- If you dont have keys already execute
ssh-keygen this generates two keys in ~/.ssh
- id_ed25519: this is private key
- id_ed25519.pub: this is public key
- Now lets upload this public key to github (Watch video for screenshots)
Underlying concept
- Every remote branch has a local representation generally branches will be created with names
remotes/<conn-name>/<branch>

- When you are sending changes (pushing) to remote the actual remotes latest commit id of the branch should be matching your remote representation
- To get the latest changes the command is
git pull <connection-name> <branch>
- To avoid unneceassary merge commits
git pull <connection-name> <branch> --rebase
-
git pull => fetch + merge
-
Exercise:
- setup ssh keys on github gitlab, bitbucket
- Create a local repo and push it
- github private repo
- gitlab private repo
- bitbucket repo
- Create a remote repo and clone the changes locally
Like this:
Like Loading...