From 2152b1ec45eae26fa669d9a08100357cc3af892f Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski
Date: Wed, 30 Jun 2021 22:57:50 +0200
Subject: Add git hosting tutorial
---
git.html | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 186 insertions(+)
create mode 100644 git.html
(limited to 'git.html')
diff --git a/git.html b/git.html
new file mode 100644
index 0000000..ca9ba75
--- /dev/null
+++ b/git.html
@@ -0,0 +1,186 @@
+
+
+
+ Hosting Your Own Git Repositories – LandChad.net
+
+
+
+
+
+
+
+
Hosting Your Own Git Repositories
+
+
+
+ Once you have your own VPS or other Internet-available server, you can
+ start hosting your own git repositories. The goal of this tutorial is
+ for you to go from
+
+
git clone github.com/...
+
+ to
+
+
git clone YourLandChadDomainName.xyz/...
+
+ so you can cultivate your own homegrown, grass fed code, rather than
+ relying on a centralized proprietary service like GitHub.
+
+
+
What's not included in this tutorial
+
+
+
+ We will not set up a web front end. Your only interaction with
+ these repos will be via the git command line tool.
+
+
+ We will not support multiple users. It's expected only you, the
+ server owner, have write access to these repos.
+
+
+
+
Installing git
+
+
+ You most likely already have it installed on your server, but if not,
+ run
+
+
apt install git
+
+ We don't need any additional software, git itself ships
+ with everything needed to host a remote repository!
+
+
+
Creating bare repositories
+
+
+ For each repository you want to host, you will need to manually create
+ what's called a "bare" repository on your server. These hold all the
+ commits and any other git data needed for your repository, but without
+ an expanded "index" in which you can just browse all the files of a
+ certain commit in the file system.
+
+
+
+ These repositories need to be owned by the git user, and
+ you should probably pick a directory where you will store them all. One
+ sane choice is under /srv/git/, and we will use this as the
+ example directory for the rest of the tutorial, but any other path will
+ do as well.
+
+
+
Become the git user and create the directory
+
+
+ If you're logged in to your server as root and have git
+ installed, you can become the git user by executing
+
+
su git
+
+ Now navigate to/create your desired directory, for example
+
+
+cd /srv
+mkdir git
+
+
+
Create the repo
+
+
+ Now you can create the bare repository with
+
+
+
git init --bare my-repo.git
+
+ By convention, bare repository names end with ".git".
+
+
+
+ Repeat the above command for any other repositories you want to host.
+
+
+
Syncing local repositories with your server
+
+
Set up SSH login for the git user
+
+
+ You will need to be able to login remotely via ssh as the
+ git user we've used before. To do this, you will either
+ need to set up a password for the git user with
+
+
passwd git
+
+ or copy your public SSH key from your local machine to
+ /home/git/.ssh/authorized_keys.
+
+
+
Syncing a new repository with your server
+
+ If you've just created a new repository on your local machine, you will
+ need to tell git where the remote repository is to be able
+ to sync with it (using commands like git push or
+ git pull). We do this by defining a "remote" for your
+ repository.
+
+
+
+ A remote is just a named URL remembered in your repo's configuration. So
+ we need a name and a URL. By convention, the "main" remote is called
+ "origin". The URL has the format user@host:path, where
+
+
+
+ user is git, the git user
+ we've already worked with before.
+
+
+ host is a DNS hostname pointing to your server.
+ Alternatively you could even use your server's raw IP address.
+
+
+ path is the absolute path to the repository on the
+ server, in our example /srv/git/my-repo.git
+
+
+ Now you'll be able to run git push origin master to push
+ your commits or git pull origin to pull from the remote.
+
+
+
Syncing an existing repository
+
+
+ If you've already set up your local repository to sync with a service
+ like GitHub it probably already has a remote called "origin". You can
+ see your repo's remotes with
+
+
git remote -v
+
+ You can follow the above instructions, substituting an arbitrary other
+ name other than "origin" to create a differently named remote, e.g.
+
+
git remote add vps git@...
+
+ Now you'll be able to push/pull with git push vps master
+ and git pull vps, respectively.
+
+
+
+ Or, to completely sever ties with your centralized git provider, first
+ remove the original origin with
+
+
git remote remove origin
+
+ and then follow the instructions as above.
+
+
+
+
+
--
cgit v1.2.3
From e4913737cc7e6ca95b8d5c27c118c71dd5d88a4b Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski
Date: Wed, 30 Jun 2021 23:01:14 +0200
Subject: Add contribution info
---
git.html | 6 ++++++
1 file changed, 6 insertions(+)
(limited to 'git.html')
diff --git a/git.html b/git.html
index ca9ba75..bfeb086 100644
--- a/git.html
+++ b/git.html
@@ -180,6 +180,12 @@ mkdir git
and then follow the instructions as above.
+
+