SAFweb2-Release 2.1.17.2

Quick Tipps

clone vs. fork

Clone legt eine Kopie lokal an, die aber der Quelle gehört. Ist für eine Zusammenarbeit geeignet. Fork macht eine eigene Kopie draus, die man selber ändern und verwalten kann.

was sollte eingecheckt werden?

.gitignore
package.json
package-lock.json

Git auf dem Server einrichten

User auf dem Server anlegen und SSH Zugang einrichten. Per authorized_keys oder per ssh-copy-id

Leeres Repository auf dem Server anlegen

Gruppe git anlegen. Alle Git-User in diese Gruppe packen

cd /main/target/git/directory
mkdir git-repository OR mkdir projects.git
cd this/directory/above
git init --bare

// oder
git init --bare --shared

// Schreibrecht für Gruppe einrichten
chmod -R g+wx gitrepositories/

Jedes Projekt benötigt ein eigenes <project>.git File.

Repository verbinden und initial füllen

Version 1 - push

local:

cd myproject
git init
git add .
git commit -m "Initial commit"

// remote einchecken
git remote add origin username@gitserver:/main/target/directory/git-repository
git push --set-upstream origin main

Version 2 - secure copy (scp)

local:

cd myproject
git init
git add .
git commit -m "Initial commit"

//
git clone --bare myproject my_project.git

// ist das gleiche wie:
// 0. cp -Rf myproject/.git my_project.git

// Repo zum Server kopieren
scp -r my_project.git username@gitserver:/srv/git

Rules

1 Commit = 1 Topic (golden rule)
Branches:
    create for:	new features
                experiments
                bugfixes
                …

Git work always on a Branch. HEAD is the active Branch
git checkout switch the HEAD to an other branch
git merge integrates all changes from a specific branch to the current HEAD branch:
Merge

GIT Kommandos

Everyday Workflow

git clone -b main safweb@95.217.217.117:/opt/gitrepositories/...         // first checkout
git clone user@git-server:project_name.git -b branch_name /some/folder   // or so

git add .
git reset                                                                // to revert add
git commit -m „the comment“
git status

git pull [remote] [branch]                                              // aktualisiert von remote
Sample: git pull safweb2 main
git fetch                                                               // kopiert Änderungen nur in das lokale Repo

Diff between local and remote

git diff --stat --color develop origin/develop

Recover deleted File:

git checkout <path to file with name>

Update from Branch:

git checkout master
git pull origin master
git merge test
git push origin master
git push -u origin master                                               // establish a tracking connection

Branches / Merge

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

git branch <new Branch name>                                            // create a new branch
git checkout <new Branch name>                                          // switch to new branch

git branch -vva  // show remote, local and tracking information
--- 

git checkout -b <new-branch-name>	                                    // create (build -b) and checkout to a new branch
git branch							                                    // show existing branches
do changes
commit changes
… repeat
git checkout <old branch (for e.g. master)
git merge <new-branch-name>			                                    // bring changes to master

Alternative

git switch -c th/test/module

Delete Branch

git branch -d <branch>

Git stash

Eine Art Clipboard. Hier kann unfertige Arbeit zwischengespeichert werden.
Dateien die „gestashed“ sind, verschwinden aus dem Branch und es können andere Arbeite stattfinden
ohne die halb fertige Arbeit im Weg zu haben.

Lokale Änderungen nach stash:

git stash

Anzeigen der stashes:

git stash list

Herausholen aus dem Stash:

git apply stash@{0}                                                   // oder was auch immer für eine Nummer
git stash pop                                                         // herausholen und gleichzeitig löschen

Aufräumen im Clipboard:

git stash drop 0

Remote Info und Settings

Info:

git remote show origin
git config --get remote.origin.url
// ab 2.7+
git remote get-url origin

Settings:

git remote set-url remote-name url
git remote get-url <name>
git remote get-url origin
git remote set-url <remote_name> <remote_repository_url>
git remote set-url heroku https://git.heroku.com/fictional-remote-repository.git

MOVE git from Server -> Server

git clone --mirror git@10.100.0.10:/data/Code/git/safweb.git ./safweb
cd safweb
git remote add safweb2 thomashorst@95.217.217.117:/opt/gitrepositories/safweb2.git
git push safweb2

Remote REPOS

Host: 95.217.217.117:/opt/gitrepositories/

  • safineia.eu.git
  • safweb2-appliance_page.git
  • safweb2-docker.git
  • safweb2-docs.git
  • safweb2.git
  • safweb2-installation.git
  • safweb2-man.git
  • safweb2-oraapi.git
  • safweb2-releases.git
  • safweb.git
  • webinfo-frontend.git
  • webinfo.git
  • webinfo-layout
  • webinfo-layout.git
  • websites
    • docs_safineia_eu.git
    • layout_safineia_eu.git
    • safineia_eu.git
    • techdocs_safineia_eu.git