View source for Git

{{toc numerate=1}}
Goal is that all administrators can perform the necessary actions properly and according the project policies.
  * GUI + CLI

===Repository===
  1. **https://github.com/WackoWiki/wackowiki**  <-- main
  2. https://sourceforge.net/p/wackowiki/code/ <-- mirror
  3. https://bitbucket.org/wackowiki/wackowiki/ <-- dev

====Legacy====
interwiki.conf
  * ##Revision## --> Mercurial
  * ##Commit## --> Git

%%(sql)
UPDATE doc_page SET body = REPLACE(body, 'source:default/', 'source:master/') 
%% 

====Layout====

====.gitattributes====
%%
* text eol=lf

*.png binary
*.gif binary
*.ico binary

.gitattributes export-ignore
.gitignore export-ignore
composer.json export-ignore
composer.lock export-ignore
%% 
====.gitignore====
%%
# WackoWiki

/cache/*
!/cache/.htaccess
/cache/config/*
!/cache/config/.htaccess
/cache/feed/*
!/cache/feed/.htaccess
/cache/page/*
!/cache/page/.htaccess
/cache/query/*
!/cache/query/.htaccess
/cache/session/*
!/cache/session/.htaccess
/cache/template/*
!/cache/template/.htaccess

/file/backup/*
!/file/backup/.htaccess
/file/global/*
!/file/global/wacko_logo.png
/file/perpage/*
!/file/perpage/.htaccess
/file/thumb/*
!/file/thumb/.htaccess

# Eclipse IDE
.buildpath
.project
.settings/

# PHPStorm IDE
.idea
*.iml
%%

If you are trying to ignore changes to a file that's already tracked in the repository (e.g. ##config.php## file that you would need to change for your local environment but you would never want to check in these changes) than what you want to do is:
%% git update-index --skip-worktree <file>%%

===Differences to Mercurial===

====Purge the last commit====
%%
git reset --hard HEAD^
git push origin -f
%%
%%
git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
git push --force
%%
a specific repo:
%% git push https://git.... --force %%
====Clone particular version of remote repository====
##git clone -b branch_or_tag_name repo_address_or_path##
%%
git clone -b 6.1.4 https://bitbucket.org/wackowiki/wackowiki.git

git clone -b 6.1.4 https://github.com/WackoWiki/wackowiki.git
%% 

====Reset local repository branch to be just like remote repository HEAD====
%%
git fetch origin
git reset --hard origin/master
%% 

===Github===
====Workflow====
file:/git_workflow.png
====Rational====

Pro
  * almost all libs we use are on Github
  * API
Contra
  * lock-in
  * GitHub GUI no longer supports languages other than English.

====Settings====
((https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token Creating a personal access token))
Personal access tokens function like ordinary OAuth access tokens. They can be used instead of a password for Git over HTTPS, or can be used to authenticate to the API over Basic Authentication.

https://bitbucket.org/blog/deprecating-atlassian-account-password-for-bitbucket-api-and-git-activity

====Two-factor authentication (2FA)====
file:219820201-6fe7f80a-cb6b-4bb9-bd56-984ed917e6a5.webp?right&500
https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13/ - mandatory 
https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/about-two-factor-authentication

2FA methods
  * **TOTP**
  * SMS
  * **security keys**
  * GitHub Mobile

F-Droid
  * ((https://f-droid.org/packages/org.fedorahosted.freeotp/ FreeOTP))
  * ((https://f-droid.org/en/packages/com.beemdevelopment.aegis/ Aegis Authenticator))

Linux
  * GNOME Authenticator
  * ((https://apps.kde.org/de/keysmith/ Keysmith)) (KDE)
===Import from Mercurial===

====Settings====
file:/merge_rebase.png
  1. ((https://help.github.com/en/github/administering-a-repository/requiring-a-linear-commit-history Requiring a linear commit history))
  2. ((https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address Setting your commit email address))
    * %%commit eae3fd3461492b2396b66f9d7d7441f611775005
Author: vendeeglobe <54716082+vendeeglobe@users.noreply.github.com> 2019-08-24 17:28:56
Committer: vendeeglobe <54716082+vendeeglobe@users.noreply.github.com> 2019-08-24 17:28:56%% 

===Workflow===
file:/Org/Tools/Repository/Git/feature_branches.png

===Testing===
  1. merge pull requests
  2. strip an unwanted commit

===CLI===
{{include page="!/GitCommands"}}

===GUI Clients===
  * ((!/Client Clients))

====IDE====
https://wiki.eclipse.org/EGit/User_Guide

file:/eclipse_workspace_wackowiki.png
((/Org/Tools/Repository/Git/Client/Eclipse Working with Eclipse))

===Backup Solution===
Mitigate lock-in 

===Resources===
  1. ((https://en.wikipedia.org/wiki/Comparison_of_source_code_hosting_facilities Comparison of source-code-hosting facilities))
  1. ((https://en.wikipedia.org/wiki/Comparison_of_version_control_software Comparison of version-control software))

self-hosting
  2. https://forgejo.org/
  3. https://gogs.io/
  4. https://onedev.io/