location: Diff for "Git"

Institute of Mathematics - PublicMathWiki:

Differences between revisions 39 and 47 (spanning 8 versions)
Revision 39 as of 2021-02-03 09:27:22
Size: 5471
Editor: eseide
Comment:
Revision 47 as of 2023-10-22 15:56:48
Size: 7492
Editor: crose
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
Line 42: Line 43:
 * Best is to ask a person of such project, who is affiliated with I-MATH, to request the account via [[https://math.uzh.ch/support]].  * Best is to ask a project member affiliated with I-MATH to request the account via [[https://math.uzh.ch/support]].
Line 51: Line 52:
Line 61: Line 63:
   * Assing members with roles to projects
   * Create/Assing issues
   * Assign members with roles to projects
   * Create/Assign issues
Line 67: Line 69:
= GIT Best Practise = = GIT Best Practice =
Line 131: Line 133:
== Visually show commit history ==

 * `gitg`
 * Use the git.math.uzh.ch webinterface

== Search the commit which breaks something ==

 * Based on binary search.
 * Give a good and a bad commit.
 * The `git bisect ...` command looks always for the commit in the middle. Do a check of such a commit and decide to continue the search in the lower or upper half.
 * https://git-scm.com/docs/git-bisect
Line 154: Line 144:
== Overwrite local branch with remote ==

 * https://phoenixnap.com/kb/git-overwrite-local-branch-with-remote

== Visually show commit history ==

 * `gitg`
 * Use the git.math.uzh.ch webinterface

== Search the commit which breaks something ==

 * Based on binary search.
 * Give a good and a bad commit.
 * The `git bisect ...` command always looks for the commit in the middle. Do a check of such a commit and decide to continue the search in the lower or upper half.
 * https://git-scm.com/docs/git-bisect

= Mac OS X =

 * By using `git` the following error is shown:
{{{
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
}}}
 * Open a terminal and install `xcode`: a pop up have to acknowledged.
{{{
xcode-select --install
}}}

== Umlaute ==

 * MacOS X uses a different UTF8 encoding for filenames than Windows and Linux.
 * This leads to confusion: after a fresh clone of a GIT repo (created on windows oder linux) a `git status` will show untracked files if they contain umlaut in their filenames.
 * https://www.git-tower.com/help/guides/faq-and-tips/faq/unicode-filenames/mac
 * To exchange files between Mac, Linux, MS-Windows `git` can handle this internally
{{{
$ git config --global core.precomposeunicode false
}}}

== GIT Client ==

 * https://www.sourcetreeapp.com/?ref=catalins.tech
Line 155: Line 187:


== Change Repo: http > ssh ==

{{{

# Status Quo
$ git remote -v show
origin https://systemvcs.math.uzh.ch/it/typo3-docker.git (fetch)
origin https://systemvcs.math.uzh.ch/it/typo3-docker.git (push)

# Remove Origin
$ git remote rm origin

# Set SSH Version
$ git remote add origin git@systemvcs.math.uzh.ch:it/typo3-docker.git


# Status Quo
git remote -v show
origin git@systemvcs.math.uzh.ch:it/typo3-docker.git (fetch)
origin git@systemvcs.math.uzh.ch:it/typo3-docker.git (push)

# Try a git pull:
$ git pull

# If you receive: There is no tracking information for the current branch. ... try:
$ git branch --set-upstream-to=origin/main main
}}}

'''Attention''': if you change to SSH and

 * You use SSH public key (stored on GIT server),
 * You're logged in on a remote server by ssh and you're using a different user ID than the one where the public key on the git server belongs to,

than you should forward your SSH-Agent! E.g. '''ssh root@host -A'''

Server

Server Info

https://git.math.uzh.ch

Software

Gitlab

Git push/pull access

mainly via SSH over git@git.math.uzh.ch - do not forget to upload your public ssh key

Cheat sheet

GIT for SVN users

Prerequisites

  • Git installed (already done on IMATH server).

SSH Keys

To work with private GIT repos or to commit files, it's necessary to identify yourself. This is done via SSH Keys. Do this on all devices which you like to use with the GIT server (and in your I-MATH thinlinc session if you use it).

  • Setup SSH keys (per device) - HowTo create private/public ssh keys

  • Linux: On your device/session, push the keys to your ssh-agent

    eval "$(ssh-agent -s)"
  • Do a test:
    • Via ssh: ssh -T git@git.math.uzh.ch (do not replace git with your username, use git@git.math.uzh.ch as written).

    • By cloning a repo.

Git account

For members of I-MATH

For members of UZH (not I-MATH)

For non UZH persons

If you like to collaborate on a project which is hosted on https://git.math.uzh.ch, you have to request a git.math.uzh.ch account.

After the first-time login

  • If you requested an "external" account, you will be asked to change your initial password.
  • Recommended: You need to provide your public SSH key. This can easily be done on the Gitlab web-interface.

Working with Git

git COMMAND git@git.math.uzh.ch/<username>/<projectname>

Managing your Projects with Gitlab

Gitlab has quite extensive managing capabilities.

  • You can, among other things,
    • Crate/fork/rename/remove projects
    • Create/delete/join Teams
    • Assign members with roles to projects
    • Create/Assign issues
    • Have a wiki for a project
  • The gitlab user documentation is found on https://git.math.uzh.ch/help.

GIT Best Practice

New project from scratch

  • Create a new project via the webinterface.

git.project.png

  • You'll see a summary with the next steps:

Git global setup
----------------
git config --global user.name "First Lastname"
git config --global user.email "email@math.uzh.ch"

Create a new repository
-----------------------
mkdir <local projektdir>
cd <local projektdir>
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin git@git.math.uzh.ch:<project>.git
git push -u origin master

Push an existing Git repository
-------------------------------
cd existing_git_repo
git remote add origin git@git.math.uzh.ch:<project>.git
git push -u origin master

GIT daily use

Local: Add new files to existing repo

git add <file>

Local: Work on your files

  • Commit changes locally

git commit -a
  • Or at IMATH you can use git-commit, which will in every file replace $Id$ by User/timestamp:

git-commit
  • Commit changes remote

git push

Local: clone an existing repo to start working on it

git clone git@git.math.uzh.ch:<project>.git

Purged Remote branches still shown locally

$ git remote update --prune

Purge a file completely from all commits & branches

$ cd <root of your repo>
$ git-forget-file.sh <path to file>/<file>

Overwrite local branch with remote

Visually show commit history

  • gitg

  • Use the git.math.uzh.ch webinterface

Search the commit which breaks something

  • Based on binary search.
  • Give a good and a bad commit.
  • The git bisect ... command always looks for the commit in the middle. Do a check of such a commit and decide to continue the search in the lower or upper half.

  • https://git-scm.com/docs/git-bisect

Mac OS X

  • By using git the following error is shown:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), 
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
  • Open a terminal and install xcode: a pop up have to acknowledged.

xcode-select --install 

Umlaute

  • MacOS X uses a different UTF8 encoding for filenames than Windows and Linux.
  • This leads to confusion: after a fresh clone of a GIT repo (created on windows oder linux) a git status will show untracked files if they contain umlaut in their filenames.

  • https://www.git-tower.com/help/guides/faq-and-tips/faq/unicode-filenames/mac

  • To exchange files between Mac, Linux, MS-Windows git can handle this internally

$ git config --global core.precomposeunicode false

GIT Client

FAQ

Change Repo: http > ssh

# Status Quo
$ git remote -v show
origin  https://systemvcs.math.uzh.ch/it/typo3-docker.git (fetch)
origin  https://systemvcs.math.uzh.ch/it/typo3-docker.git (push)

# Remove Origin
$ git remote rm origin

# Set SSH Version
$ git remote add origin git@systemvcs.math.uzh.ch:it/typo3-docker.git


# Status Quo
git remote -v show
origin  git@systemvcs.math.uzh.ch:it/typo3-docker.git (fetch)
origin  git@systemvcs.math.uzh.ch:it/typo3-docker.git (push)

# Try a git pull:
$ git pull

# If you receive: There is no tracking information for the current branch. ... try:
$ git branch --set-upstream-to=origin/main main

Attention: if you change to SSH and

  • You use SSH public key (stored on GIT server),
  • You're logged in on a remote server by ssh and you're using a different user ID than the one where the public key on the git server belongs to,

than you should forward your SSH-Agent! E.g. ssh root@host -A

Pipeline failed notification

  • Maintainer receives all pipeline errors per mail by default
    • screen_gitlab_error.png

  • Others can subscribe to it on the main site of a project:
    • setting_notifaction.png

Windows Change Saved Git Password

  • Open "Credential Manager" (German: "Anmeldeinformationsverwaltung")
    • 01_credential_manager.png

  • Choose "Windows Credentials" (German: "Windows-Anmeldeinformationen") and remove all saved credentials for Git.
    • 02_windows_credentials.png

  • Use git as usual, you will be asked to enter your password

PublicMathWiki: Git (last edited 2023-10-22 16:01:43 by crose)