2024-02-05T09:59:03.086794419+00:00
git is a source control system. By using
git or other source control software, one will be able to
have a history of what the working directory, i.e. a series of changes
made to specific directory. The source control system is commonly used
with computer users to track software source code or even a web
developer to keep record on website changes.
With the popularity of git repositories, many options to
host a git repo has been emerged. The first of them is
Sourceforge, which old projects such as the popular
7zip archiver is hosted there. The popular GitHub make it easy to host a
git repository with very user friendly web interface to browse the files
inside the repository.
git is a decentralized version control system. So a
git repository is just a copy of git data.
The .git directory inside a working directory is the
local git repository. This local repository will be
synchronized with remote repository. In fact, a remote
repository can be anything: from folder on the same disk partition, to
another computer served via http or git protocol or even mounted network
share folder.
If you have another computer out there and it is accessible via
ssh, then you can get your own git remote
repository set up. The remote repository can then be accessed via http
for fetching and ssh for pushing.
Log into your remote computer via ssh. Create a
directory, for example projects/example-project.git
mkdir -p $HOME/public_html/projects/example-project.gitChange directory to the newly created directory.
cd $HOME/public_html/projects/example-project.gitStart an empty bare git repository
git init --bareDone. Your remote repository has been set up.
With the remote repository set up, one can initialize a git repository on a directory and set the directory containing bare repository as remote. This scenario can be viewed as remote repository on another directory.
mkdir -p $HOME/my_wonderful_projects/example-project
cd $HOME/my_wonderful_projects/example-project
git init
git config --local user.name "mydeardiary"
git config --local user.email "mydeardiary@tilde.club"
cat <<EOL > README.md
# Welcome to my project
This is just a sample git repository.
It is demonstrated to give a brief explanation on using git.
EOL
git add README.md
git commitOk, now we have a directory containing git repository
with a single commit.
Now let’s set up a remote repository with the newly created bare git repository.
git remote add "my_local_remote" $HOME/public_html/projects/example-project.gitWith a remote repository configured, let’s push the first commit on default git branch (master) to the remote repository.
git push "my_local_remote" masterDone. The remote bare repository has been updated with our first commit.
Since the remote repository is in public_html directory,
the directory can be served as public git repository via
http(s) protocol.
cd $HOME/public_html/projects/example-project.git
git update-server-infoAfter updating server information, the remote can be shared to the
world. In case of this tilde.club webspace, the
world-accessible remote repository will be placed on
https://tilde.club/~"$LOGNAME"/projects/example-project.git/.
(Don’t omit the trailing slash at the end, since this url is a
directory).
Of course, replace "$LOGNAME" with your
tilde.club user name.
To make it easy for others to access the remote repository, create an
index.html file inside the public git
directory.
<!DOCTYPE html>
<html lang=en>
<head>
<title>A simple git repository example</title>
</head>
<body>
<p>This directory contains a simple git repository.</p>
<p>To clone this repository, you need git installed.</p>
<p>
<pre><code>git clone https://tilde.club/~"$LOGNAME"/projects/example-project.git</pre></code>
</p>
</body>With this set up, you can share the link of the public git repository to the world.
So that is how simple a git repository can be.
Well, if you are curious to find the real world example of this
simple git repository set up, you may visit my
simple python based markdown to html converter.
Update: local mirror of python webspace is available.
Thanks for visiting my tilde space.