Git
Projekty na Githubie - pierwsze kroki
Git jest obecnie najpopularniejszym i najważniejszym systemem kontroli wersji. Powstał ponad 10 lat temu do obsługi rozwoju jądra Linuksa i przez ten czas rozwinął się w cały ekosystem umożliwiający i ułatwiający rozwój oprogramowania. Jednym z elementów tego ekosystemu jest Github, witryna i społeczność używająca jej interfejsu do rozwoju i publikacji programów, skryptów, dokumentów itp. Wersja darmowa do niedawna pozwalała tylko na publiczne repozytoria, ale od 2019 są też dostępne repozytoria prywatne z ograniczeniem do trzech współpracowników. Wg wielu opinii zawartość konta na Gitbhubie jest ważnym elementem CV.
Porównanie gita z innymi systemami kontroli wersji można znaleźć na Wikipedii - Comparison of version-control software
Porownanie Githuba z innymi witrynami tego typu - Comparison of source-code-hosting facilities
Poniżej opis jak zacząć używanie Githuba i gita.
Jako edytor wybrałem VSC dla przykładu bo jest 1) dobry 2) powszechnie używany 3) darmowy, bez ograniczeń 4) dostępny dla wszystkich trzech ważnych systemów operacyjnych (Windows, Linuks. Mac) 5) bez konfiguracji jest przygotowany do gita
1. Założenie konta na Github.com
Jest to tak samo proste jak założenie konta na każdej innej witrynie, wybieramy nazwę użytkownika, podajemy konto pocztowe i wybieramy hasło. To wszystko.
Z ikonki użytkownika w prawym górnym rogu możemy wybrać widok profilu użytkownika, repozytoria, albo ustawienia. W repozytoriach mamy przycisk New, którym tworzymy nowe repozytorium.
2. Zainstalowanie gita na lokalnym komputerze
np.:
apt-get install git
3. Inicjalizacja gita
W katalogu głównym użytkownika z linii poleceń:
$ git init
co utworzy katalog .git (będą tam repozytoria lokalne i cała konfiguracja lokalnego repozytorium.
4. Plik konfiguracyjny
Jest to ~/.gitconfig 8.1 Customizing Git - Git Configuration.
5. Konfiguracja
W linii poleceń można ustawić trzy podstawowe, niezbędne rzeczy (jeżeli po config damy parametr -- global, tworzy ustawienie dla wszystkich kont):
user:~/.git$ git config user.name "user"
user:~/.git$ git config user.email "user@mail.com"
user:~/.git$ git config core.editor code
user:~/.git$ git config --list
Ostatnie polecenie pokazuje treść pliku konfiguracyjnego, warto ją sprawdzić, dlatego, że np. bardzo często użytkownicy popełniają literówkę i zamiast user.email wpisują user.mail czego git nie akceptuje ani nie koryguje.
6. Utworzenie klucza SSH
4.3 Git on the Server - Generating Your SSH Public Key:
cd ~/.ssh
sprawdzamy czy nie ma już pliku id_rsa
user:~/.ssh$ ls
known_hosts
jeżeli nie ma to:
user:~/.ssh$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tomek/.ssh/id_rsa): // tu [Enter]
Enter passphrase (empty for no passphrase): // tu [Enter], bo tworzenie hasła nie jest konieczne
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ivxVwUyvZXPTwgqzOiUXYnAEdB3/MYLPNkW1wtJmCb0 user@comp
The key's randomart image is:
+---[RSA 2048]----+
| o .. o . . +.|
| . .S + o .|
|.. + o + . . ..+o|
| o .oB o |
|. ...oo . o E|
|. . = o . . . *o.|
| oo o.. . |
| . ....+*==. |
| . + B o |
+----[SHA256]-----+
Wygląd kluczy pozostawiłem, ale oczywiście znaki są pozamieniane, pamiętajmy, że każdy klucz prywatny jest tajemnicą, jeżeli nie mamy pewności jaki to jest traktujemy go jak prywatny i nawet publiczny ujawniamy tylko tam gdzie jest to potrzebne.
7. Umieszczenie klucza na Githubie
Klucz jest zawarty w pliku ~/.ssh/id_rsa.pub i kopiujemy go do Github / Ustawienia / Klucz SSH i zapisujemy. Jeżeli nie ma żadnego komunikatu błędu oznacza to, że został zaakceptowany. Zawsze będzie można go skasować i zamienić na inny.
8. Utworzenie repozytorium na Githubie i lokalnej kopii repozytorium
W utworzeniu repozytorium pomaga następująca ściąga z Githuba
Get started by creating a new file or uploading an existing file. We recommend every repository include a README, LICENSE, and .gitignore.
…or create a new repository on the command line
echo "# repository-name" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:username/repository-name.git
git push -u origin master
…or push an existing repository from the command line
git remote add origin git@github.com:username/repository-name.git
git push -u origin master
…or import code from another repository
Jeżeli mamy jakieś repozytoria na Githubie i tworzymy lokalną kopię na komputerze. Tworzenie takiej kopii nie wymaga uwierzytelnienia. Wystarczy polecenie, które tworzy kopię repozytorium w katalogu .git:
user:~/.git$ git clone git@github.com:user/RepoName
9. Edycja
Uruchamiamy VSC i otwieramy katalog .git. Od razu widać nowe opcje i inny wygląd listy katalogów i plików, wybieramy z danego repozytorium pliki do edycji i dokonujemy zmian.
10. Commit
Linia poleceń jest już w Code, ale wszystko jedno której użyjemy. Commitowanie można zrobić na dwa sposoby, tak jak opisano w tym artykule: Start a new git repository, możemy użyć HTTPS co będzie za każdym razem wymagać podania hasła:
https://github.com/username/new_repo
Lub SSH, które zapisuje klucz
git@github.com:username/new_repo
11. .gitignore
Pozostaje jeszcze do rozwiązania jeden problem, otóż VSC pokazuje tysiące oczekujących zmian. Żeby ograniczyć gita tylko do jego własnego katalogu potrzebujemy pliku .gitignore - Git - gitignore Documentation. W najprostszej podanej w dokumentacji formie wyklucza wszystkie katalogi, ograniczając działanie gita do jednego:
# exclude everything except directory user/.git
/*
!/user
/user/*
!/user/.git
Odnośniki
Git
- Git - Documentation | Pro Git book
- git ready learn git one commit at a time
- Resources to learn Git
- Git Magic - [PL]
- Git for Computer Scientists
- A Visual Git Reference
- A git Primer
- Git Immersion
- Think Like (a) Git
- Git Workflows by Yan Pritzker
- Getting Git Right - Atlassian Git Tutorial
- git/github guide a minimal tutorial
- ICT Solved!: "Getting Started with Git"
- How to teach Git
- How to explain git in simple words?
- Git Cheatsheet
- scotch.io: Chris on Code - Get to Know Git Courses
- The Ultimate Beginner Git Cheatsheet
- Visualizing Git Concepts with D3
- Learn Git Branching
- The Git Parable
- Git Beginner's Guide for Dummies
- git - the simple guide
- Courses | git.training
- Wikibooks: Git [EN] | Git [PL]
- Resources to learn Git
- imgur: git workflow
- "Git in Practice: Includes 66 Techniques 1st Edition [PDF]"
- "Git Dos and Don’ts"
- "Git Cheat Sheet For Beginners"
- Git Command Explorer
- git rebase in depth
- freecodecamp.org: M.V. Thanoshan - The beginner’s guide to Git & GitHub Fabio Pacific "Git Cheat Sheet – 50 Git Commands You Should Know" | Beau Carnes "Git for Professionals – Free Version Control Course"
- The Net Ninja - Git & Github Tutorial
- "Getting started with Git: Terminology 101"
- joshsisto.github.io/git/
- "Configuring git"
- "How to use git efficiently"
- xkdc: Git
- Git for beginners - quizz
- Write yourself a Git!
- Oh shit, git!
- Git Better
- git-flow cheatsheet
- Learn Git with GitKraken
Git - artykuły
- "Git series 1/3: Understanding git for real by exploring the .git directory"
- Akshit Tiwari "15 Best Git Tutorials & Courses - Learn Git Development Online"
- devstyle.pl "5 Obowiązkowych Sposobów Na Rewelacyjną Pracę Z Gitem (I Nie Tylko)"
- dev.to Wade Zimmerman "The Git Commands I Use Every Day"
- dev.to: "8 Productivity Tips for GitHub" | "Understanding git for real by exploring the .git directory" | "Git hacks you should know about" | Amir Barak "Git - Revert The Revert"
- Git Cheat Sheet for Data Science
- "How to Write a Git Commit Message"
- Marc Backes "A Git-Flow Explainer & How To Tutorial"
- Rafeh Qazi na Instagramie: „Learn the basic commands used in GIT 🔥 🚀
- Davide Nunes "Git Good"
- "Rewrite the past in fewer steps with rebase"
- stackoverflow: Questions tagged [git]
- 24 Git Interview Questions For Developers
- Practical Git for Everyday Professional Use
- Maciej Aniserowicz "5 Obowiązkowych Sposobów Na Rewelacyjną Pracę Z Gitem (I Nie Tylko)"
- Medium: "A Dead Simple Intro to GitHub for the Non-Technical" | Indrek Lasn "Here Are 7 Git Commands Every Developer Should Know" | Wiktor Malinowski: "Start Using Git on the Command Line like a Pro in 5 Minutes" | "10 Git Commands You Should Know" | 17 Git Tips For Everyday Use | "How to become a Git expert" | "15 Git Commands You May Not Know" | Debugging with Git | Ömer Karabacak "Bulk Find and Replace in multiple files in multiple Git Repositories" | Ahmed Bouchefra "How to Delete Local and Remote Git Branches"
- freecodecamp.org #GIT | Bolaji Ayodeji "How to fix Git always asking for user credentials"
- "15 Git Commands You May Not Know"
- "A Step by Step guide on how to use Git and Github"
- "8 Manoeuvres to Make You the Perfect Git Citizen"
- "Gitflow The easy release management workflow"
- Cem Eygi "Git Commands – 10 Terminal Tricks Every Developer Should Know" | Beau Carnes "How to Undo Mistakes with Git"
- blog.axosoft.com: "A brief intro to git"
- WriteOnly.pl / Posts by tags / Git
- Flavio Copes: All the Git and GitHub tutorials
- Git From Beginner to Advanced Step by Step With Graphical Animation
- CSS Tricks: "How I Learned to Stop Worrying and Love Git Hooks"
- "Browsing a remote git repository"
- "Git power tools for daily use" | "A successful Git branching model"
- Nitay Neeman's Blog: "Understanding Semantic Commit Messages Using Git and Angular"
- "Getting Started with Git"
- Pavlo Golub "New git commands: git switch & git restore!"
- Jake Lee "Exploring pull requests with GitHub’s rich diff functionality"
- Yair's website git
- Dan Aloni's blog /git
- Aleksandr Hovhannisyan Git Blog Posts
- DevApt "4 ways to git undo last commit in simple and easy steps"
- Zolzaya Luvsandorj "Introduction to Git for Data Science"
Youtube
- Kanały: Dan Gitschooldude [YT (3)]
- Playlisty: The Coding Train - Git and GitHub for Poets (playlista YT) | Git Tutorial [YT playlist] | Imran Sayed "Git Tutorial Playlist" [YT playlist 12 filmów] | codedamn "Git / GitHub" [YT playlist 5 filmów] | Bhavesh Bhatt "GIT - Version Control" [YT playlista 1 film] | Code SOS "Git Tutorials" [YT playlist 3 filmy] | The Nerdy Dev "Demystifying Git Tutorials For Beginners" [YT playlista 4 filmy] | Better Coding Academy "Learn Git" [YT playlist 8 filmów] | Dave Gray "Git and GitHub Tutorials for Beginners" [YT playlist 3 filmy] | Ihatetomatoes "Git Tutorials" [YT playlist 13 filmów] | Zaprogramuj Życie "Kurs Gita w praktyce" [YT playlist 13 filmów]
- Filmy: hello roman "Git i GitHub – podstawy ⌨️ hello roman #92" [34:01] | Maciej Aniserowicz "Jak pracować z GITem? (i innymi systemami kontroli wersji) [devstyle LIVE]" [YT 19:02] | Academind "Git Tutorial for Beginners - The Basics" [47:07] | Programming with Mosh "Git Tutorial for Beginners: Learn Git in 1 Hour" [YT 1:09:13] | [Linux.conf.au 2013] - Git For Ages 4 And Up [YT 1:39:42] | Git Tutorial 1 - Introduction to Git 6:28 | "GITHUB VS GIT | What are they?" [YT 8:48] | "Deep Dive into Git - Edward Thomson" [YT 1:00:02] | Learn Git in 20 Minutes [YT 17:52] | Academind "Git MERGE vs REBASE" [YT 16:11] | Nirlo "DevOps vs Git: How To Use Branches" [YT 18:29] | overment "Szybki start z Git Hooks - łatwy deployment | overment" [YT 4:10] | infoShare Academy "GIT - podstawy, zdalne repozytoria, gałęzie i łączenie zmian w 20 minut" [YT 20:22] | Fireship "13 Advanced (but useful) Git Techniques and Shortcuts" [YT 8:06]
- freeCodeCamp.org "Git Branches Tutorial" [YT 33:18] | "Git for Professionals Tutorial - Tools & Concepts for Mastering Version Control with Git" [YT 40:41]
.gitignore
- gitignore.io Create useful .gitignore files for your project | github/gitignore
- simonwhitaker/gibo
- Ignore CLI
Narzędzia
- jesseduffield/lazygit simple terminal UI for git commands
- o2sh / onefetch Git repository summary on your terminal
- Magit A Git Porcelain inside Emacs
- profclems / glab A GitLab CLI tool bringing GitLab to your command line
- Gitea A painless self-hosted Git service | Expose Gitea to Internet from a private network using Packetriot [YT 11:36]
- nosarthur/gita Manage multiple git repos side by side for sanity
- Gitutor a command line application that wraps Git and provides beginner friendly versions of git's commands
- GitMessenger chat app for developers
- Depfu automated dependency updates for Ruby and JS
- gitenc sensitive data file encryption while using Git, with GPG
- forked.yannick.io - find maintained forks of your favorite GitHub repos
- Github-Web-Apps/Starhub All about your Github account, public and private activity, stars, followers
- binder Git repo into a collection of interactive notebooks - Project Jupyter
- StackEdit
- CircleCI
- jesseduffield/lazygit simple terminal UI for git commands
- gg Git with less typing
- Mark Shust "Introducing git ship, a simplified git flow workflow"
- abskmj / hukum An NPM module printing the realtime status of Github Actions Workflow on your terminal.
- paulirish / git-open open the GitHub page or website for a repository in your browser
- jormaechea / git-web Interact with your git provider from your command line.
- GitGuardian
- Github Wrapped
- GitPals Find a team or team members for open-source development
- apostrophecms / sanitize-html Clean up user-submitted HTML, preserving whitelisted elements and whitelisted attributes on a per-element basis. Built on htmlparser2 for speed and tolerance
Git GUI
Po polsku
- Korzystanie z Gita i GitHuba - poradnik na start
- randomseed.pl: System kontroli wersji Git, cz. 1
- "Git i GitHub dla zielonych: tworzymy pierwsze repozytorium"
- overment "Kurs Git po polsku od podstaw / Czym jest branch, repozytorium, commit, github, zdalne repozytorium, fork, git rebase, rozwiązywanie konfliktów git" [YT playlista 13 filmów] | overment "Kurs GIT (tutorial)" [YT playlist 3 filmy] | Marcin Mokrzan "Git Tutorial" [YT playlist 1 film]
Github
- GitHub - Github Docs | GitHub Guides GitHub Learning Lab - GitHub Octoverse 2017 | Awesome Lists
- freecodecamp.org Ihechikara Vincent Abba "Git and GitHub Tutorial – Version Control for Beginners"
- Good First Issues
- Rutik Wankhade "Github repositories every aspiring developer should check out"
- kcd-edu
- "8 Productivity Tips for GitHub"
- GitHub special files and paths
- Code With Ghazi "How to create a Github Profile README with Dynamic Github Stats"
- 7 Tips of Searching GitHub Repositories You Should Know
- "How to Host a Static Website with S3, CloudFront and Route53"
- "How to clone all repositories in a Github Organization"
- "6 places to host your git repository"
- Artem Golubin Blog "How to track and display profile views on GitHub"
- TIL - Debugging GitHub Actions
- "6 Awesome Chrome Extension for Github"
- "What every GitHub user should know about VS Code - GitHub Satellite 2020" [YT 24:07]
- Simon Holdorf "10 Extraordinary GitHub Repos for All Developers"
- Pedro Brandão "Deploy Previews with AWS and Github Actions"
- sonic0002 "Create customized GitHub profile page"
- Leina McDermott "Let's build the GitHub authorization model"
- GitHub Key Combinations
- github.io Archives - VIP INFOTECH
Github YT
- freeCodeCamp.org "Git & GitHub" [YT playlist 7 filmów] | "Git and GitHub for Beginners - Crash Course" [YT 1:08:25]
- hello roman: "Git i GitHub – podstawy ⌨️ hello roman #92" [YT 34:01] | "GitHub Quickstart Tutorial in 3 minutes" [YT 3:49]
- overment "Github Actions - Wprowadzenie do CI/CD" [YT 55:52]
- Jak nauczyć się programowania "Git Tutorial" [YT playlist 5 filmów]
- Amigoscode "Git and GitHub Tutorial For Beginners | Full Course [2021] [NEW]" [YT 2:21:42]
- The Net Ninja "Git & GitHub Tutorial for Beginners" [YT playlist 12 filmów] | Academind "Git & GitHub - Managing Your Code" [YT 4 filmy]
- "How to Set up a Free Website with GitHub Pages (tutorial) - How I Created quanticdev.com" [YT 13:26] | "How to IDE-ify your GitHub" [7:19] | DevOps Directive "Set up GitHub Actions as a Free Website Uptime Monitor in Just 3 Minutes!" [3:37]
- JavaScript Mastery "Optimize Your GitHub Profile - Tips For Getting Hired" [YT playlist 1 film]
- Traversy Media "Git & GitHub Crash Course For Beginners" [32:41]
- Nirlo "How To Use Github Actions: Octocat Will Be Everywhere" [17:58]
- Colt Steele "Learn Github in 20 Minutes" [19:59]
- codeSTACKr "Next Level GitHub Profile README (NEW) | How To Create An Amazing Profile ReadMe With GitHub Actions" [14:27] | codeSTACKr "UPDATE: Next Level GitHub Profile README (NEW) | GitHub Actions | Vercel | Spotify" [YT 18:34] | "NEW GitHub CLI 1.0 Tutorial | FREE Swag! | Hacktoberfest UPDATE | Step-by-Step Guide | Web Developer" [YT 15:09]
- Eddy Valverde "Git Tutorial for Beginners" [YT 13:55]
- TechWorld with Nana "GitHub Actions Tutorial - Basic Concepts and CI/CD Pipeline with Docker" [YT 32:30]
Github CLI
- GitHub CLI
- Chris Pietschmann "GitHub CLI (gh) Cheat Sheet"
- "Nowe narzędzie – Github CLI ⌨️ hello roman #96" [YT 13:26]
- codedamn "New GitHub CLI Crash Course - First Look" [YT 25:37]
Narzędzia zbudowane w Githubie
- justjoin.it "Dziesięć najpopularniejszych repozytoriów na Githubie"
- Foam a personal knowledge management and sharing system, built on VSC and GitHub
- Blood Lines A 3D visualizer for genealogical data
- TrashEmail / TrashEmail hosted disposable email telegram bot; privacy friendly
- simonarvin / eyeloop Python 3-based eye-tracker tailored specifically to dynamic, closed-loop experiments on consumer-grade hardware
- ahmedgulabkhan / TouristAssist an app made using Flutter and Firebase which provides a better tourism experience. Tourists can sign up and book local guides based on the current city they are present in
- 1Hibiki1 / hex-color-blender hex color blender
- nidhaloff / deep_translator flexible free and unlimited python tool to translate between different languages in a simple way using multiple translators
- Kamori / daily-mantra.com A self-updating website for a daily mantra Daily Mantra
- alias-rahil / handwritten.js Convert typed text to realistic handwriting!
- TwinProduction / gatus Automated service health dashboard
- jdtaylor7 / prometheus Real-time drone monitoring system
- the-mcnaveen / Cheems-Chrome-Extension replace every image with Cheems
- samrobbins85 / notes-site A site containing all my university notes
- qarmin / czkawka Multi functional app to find duplicates, empty folders etc.
- nidhaloff / igel a machine learning tool that allows to train, test and use models without writing code
- The-Kid-Gid / nextinspace Never miss a launch
- CryptoDev "GitHub dla Inwestorów - M1 - Czym jest GitHub? / Widoki / Podstawy" [YT 9:41]
Gitlab
- glab A custom Gitlab Cli tool written in Go (golang)
- Team Codegiant "Top 13 GitHub Alternatives in 2020 [Free and Paid]"
- Christian Montero "GitLab CI/CD example with a dockerized ReactJS App"
- "Merge your Merge Request sooner Some of the Slack messages your team sends are critical for productivity. Automate them."
- Ankit-Mittal "Gitlab" [YT playlist 8 filmów]
- Nirlo "DevOps: How To Use Gitlab-CI" [YT 19:09]
- "GitLab CE Tutorial #1 - Creating a GitLab Droplet on Digital Ocean" [YT 10:09]
Hasła
- git-secret
- mozilla / sops Simple and flexible tool for managing secrets
- Vault by HashiCorp
- GitHub Help: "Removing sensitive data from a repository" | "Removing files from a repository's history"
- stackoverflow: Delete commits from a branch in Git | "What is the best practice for dealing with passwords in git repositories?"
- "Deleting a git commit"
- "On undoing, fixing, or removing commits in git"
Github Pages
- Github Help: Categories / Customizing GitHub Pages | Github personal website generator
- Github Pages dla zielonych
- Creating and Hosting a Personal Site on GitHub
- Why Github Pages? because it's fantastic!
- "Jak opublikować stronę internetową na GitHub pages? – krok po kroku"
- Shortcut to Toggle Between Github Repo and That Repo's Github Pages
- itsopensource "Publish GitHub pages with GitHub Actions"
- "Deploying to Github Pages? Don’t Forget to Fix Your Links"