====== Snippets: Git ======
[[:snippets:start|← Zurück zu :snippets:start]]
===== Ein neues Projekt-Repository erstellen =====
* Eigentlich nicht wirklich Git-spezifisch, es geht vor allem um Dateien die üblicherweise in Quellcode-Repos zu finden sind, wie ''README'' oder ''LICENSE''.
==== Git-Repo ====
mkdir awesome-project
cd awesome-project
git init
echo '# My Awesome Project' > README.md
git add README.md
git commit -m "Initial commit."
git remote add origin "git@github.com:user/repo.git"
git push -u origin main
==== README.md & LICENSE ====
> TODO!
* Dateiformate: Markdown weit verbreitet und auch mein
* Übersicht über das Projekt, Einführung etc.
* Unverzichtbar: Eine Lizenz-Datei. [[https://choosealicense.com/no-permission/|Ohne eine solche ist die rechtliche Situation für Nutzer schnell unübersichtlich]]
# Grundstruktur für ein einfaches README
echo '# My Awesome Project
- Links to your website or an online demo.
This program does some awesome stuff. Describe the most important aspects.
## Requirements
- GNU/Linux, macOS or FreeBSD
- Python 3.10
- At least 10GB disk space
## Installation
Describe the steps required to install your awesome program.
Start with easy instructions for package managers or a Windows installer, after that you can show how to install it from the Git repository or things like *pip* or *Cargo*.
## Get help and/or report bugs
- How can users get support? Maybe from an official Discord- or IRC-Channel?
- Your Mastodon account
- How to report bugs? You can enable GitHub Issues and discuss bug reports, feature requests or let other developers submit changes after you review them.
' > README.md
Die ''LICENSE''-Datei sollte den vollständigen Text der verwendeten Lizenz enthalten. Dieser kann z.B. von [[https://choosealicense.com/licenses/|choosealicense.com]] kopiert werden, dort ist auch zu jeder Lizenz ein kurzer Überblick der Bedingungen als Orientierung zu finden.
Praktischer Nebeneffekt: GitHub zeigt neben der Projektbeschreibung einen Link zu der Datei an, und bei unterstützten Lizenzen zusätzlich eine Übersicht wie auf [[https://choosealicense.com/licenses/|choosealicense.com]].
Alternativ kann auch mit //wget// und //sed// eins der Templates aus [[https://github.com/licenses/license-templates|github.com/licenses/license-templates]] angepasst und als ''LICENSE''-Datei gespeichert werden. Hier z.B. für die MIT-Lizenz:
YEAR=$(date +%Y)
OWNER="Your name"
wget -q -O- \
"https://raw.githubusercontent.com/licenses/license-templates/refs/heads/master/templates/mit.txt" \
| sed "s/{{ year }}/${YEAR}/" \
| sed "s/{{ organization }}/${OWNER}/" \
> LICENSE
==== .gitignore ====
> TODO
===== Einen leeren Branch erstellen =====
Normalerweise werden neue Git-Branches von einem vorhandenen Commit abgespalten, um z.B. neue experimentelle Features getrennt vom //main//-Branch zu entwickeln und diese erst später wieder mit diesem zusammen zu führen.
In einzelnen Fällen will man aber bei Null anfangen und eine komplett getrennte Commit-History haben; z.B. für eine über GitHub Pages gehostete Webseite.
Dafür wird zu einem sogenannten //orphaned branch// gewechselt, und alle vorhandenen Dateien im Repository werden gelöscht. Deshalb empfiehlt es sich das Repository neu zu klonen:
# Repository klonen
git clone git@github.com:user/repo.git repo-gh-pages
cd gh-pages
# Branch erstellen
git checkout --orphan gh-pages
git rm -rf .
# Eine index.html für den ersten Commit erstellen.
# -> Ich bevorzuge es zumindest eine Überschrift zu haben, aber die Datei kann auch genauso gut leer bleiben.
echo 'My Awesome Project
' > index.html
# Ersten Commit im neuen Branch erstellen und zu origin senden
git add index.html
git commit -m "Inital placeholder website"
git push -u origin gh-pages