************
GIT
************

*Some useful links to explain the concepts of GIT: A Version Control System*

########
Concepts
########

- https://danielmiessler.com/study/git/

- https://juri.dev/blog/2013/04/git-explained/

- https://betterexplained.com/articles/aha-moments-when-learning-git/

- https://launchschool.com/books/git/read/introduction

- https://www.gitops.tech/


########################
Official Documentation
########################

- https://git-scm.com/book/en/v2/


############################
Git Components Explained
############################

Internals
**********

- https://wildlyinaccurate.com/a-hackers-guide-to-git/

- https://jvns.ca/blog/2024/03/08/how-head-works-in-git/

- https://jvns.ca/blog/2024/01/26/inside-git/

- https://maryrosecook.com/blog/post/git-from-the-inside-out

- https://blog.isquaredsoftware.com/presentations/2019-03-git-internals-rewrite

- https://eagain.net/articles/git-for-computer-scientists/

- https://blog.isquaredsoftware.com/presentations/2021-05-using-git-effectively/


Merging
**********

- https://www.atlassian.com/git/tutorials/using-branches/git-merge

- https://stackoverflow.com/questions/20106712/what-are-the-differences-between-git-remote-prune-git-prune-git-fetch-prune

- https://stackoverflow.com/questions/4099742/how-to-compare-files-from-two-different-branches

.. image::  ../source/images/git-compare-files-diff-branches.png
    :width: 688px
    :align: center
    :height: 609px


Rebasing
**********

- https://dev.to/maxwell_dev/the-git-rebase-introduction-i-wish-id-had


Branching
***********

- https://githowto.com/
   
- https://learngitbranching.js.org/
   
- https://rogerdudler.github.io/git-guide/

- https://stackoverflow.com/questions/3651860/which-characters-are-illegal-within-a-branch-name/3651867#3651867


Stashing
**********

- https://www.atlassian.com/git/tutorials/saving-changes/git-stash

- https://www.git-tower.com/learn/git/faq/save-changes-with-git-stash

- https://stackoverflow.com/questions/19003009/how-to-recover-stashed-uncommitted-changes



################
Configuration
################
- https://www.atlassian.com/git/tutorials/
   
- http://eev.ee/blog/2015/04/24/just-enough-git-to-be-less-dangerous/
   
- https://www.digitalocean.com/community/tutorials/how-to-use-git-effectively

- https://www.digitalocean.com/community/tutorials/how-to-use-git-branches

- https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt
   
- Update multiple git repos : https://github.com/earwig/git-repo-updater


##################
Tuning & Hardening
##################

- https://superuser.com/questions/1010542/how-to-make-git-not-prompt-for-passphrase-for-ssh-key

- https://stackoverflow.com/questions/43378060/meaning-of-the-github-message-push-declined-due-to-email-privacy-restrictions

- https://github.blog/developer-skills/github/write-better-commits-build-better-projects/

- https://blog.pragmaticengineer.com/pull-request-or-diff-best-practices/

- https://blog.gitguardian.com/github-security-101/


#######################
Self-hosted Codebase
#######################

- https://gogs.io/

- https://gitea.io/en-US/
   
- https://gitbucket.github.io/gitbucket-news/gitbucket/2017/03/29/benchmark-of-gitbucket.html

- https://blog.hypriot.com/post/run-your-own-github-like-service-with-docker/ 
   

#####################
Troubleshooting
#####################

- https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
   
- https://ikriv.com/blog/?p=1905


Remove local commits NOT pushed to remote
********************************************

- https://stackoverflow.com/questions/927358/how-do-i-undo-the-most-recent-local-commits-in-git
   
- https://stackoverflow.com/questions/1611215/remove-a-git-commit-which-has-not-been-pushed


Understand .gitignore file
*********************************
- https://www.git-tower.com/learn/git/faq/ignore-tracked-files-in-git

- https://github.com/github/gitignore

- https://www.gitignore.io/

- https://stackoverflow.com/questions/1274057/how-to-make-git-forget-about-a-file-that-was-tracked-but-is-now-in-gitignore

.. image::  ../source/images/git-ignore-tracked-file.png
    :width: 675px
    :align: center
    :height: 301px


####################
Better GIT Workflow
####################

- https://sandofsky.com/blog/git-workflow.html

- https://pixelbrackets.github.io/git_cheat_sheet/

- https://dev.to/shreyasminocha/how-i-do-my-git-commits-34d?

- http://michaelwales.com/articles/make-gitconfig-work-for-you/

- https://blog.scottnonnenberg.com/better-git-configuration/

- https://githooks.com/

- https://nvie.com/posts/a-successful-git-branching-model/

- https://stackoverflow.com/questions/3580013/should-i-use-past-or-present-tense-in-git-commit-messages/3580764#3580764


################
Random Notes
################

- https://svnvsgit.com
