From b0f109b605bf466eb4e7c5a15d8864c0c431831b Mon Sep 17 00:00:00 2001 From: tiyn Date: Fri, 14 Jul 2023 00:12:36 +0200 Subject: [PATCH] git: client separated and moved to linux --- wiki/git.md | 57 ++---------------------- wiki/linux/git_(client).md | 91 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 53 deletions(-) create mode 100644 wiki/linux/git_(client).md diff --git a/wiki/git.md b/wiki/git.md index 92bf494..6cdb646 100644 --- a/wiki/git.md +++ b/wiki/git.md @@ -5,15 +5,13 @@ It's easy and can be lightweight, but also has tons of possibilities for using g ## Setup -Git consists of two parts: [a client](#client) and [a server](#server) +Git consists of two parts: [a client](#client) and [a server](#server). ### Client -The client is pretty simple to understand. -With only a handfull of commands you should be able to get your versioning going. -For servers with web interfaces there are different cli tools to control it -without using a browser. -For most linux distributions it is packaged with the `git` package. +The Git client for [Linux-based operating systems](/wiki/linux/linux.md) has a +separate article in this wiki which is called +[Git client](/wiki/linux/git_\(client\).md). ### Server @@ -37,50 +35,3 @@ If you don't need a bloated web-interface a more basic approach is more than eno - [git-server-docker](./docker-images/jkarlos_-_git-server-docker.md) is a pretty basic docker-container for git. - -## Usage - -This section addresses various use cases and problems solvable with git. - -There is also an interactive -[fixup guide by Seth Robertson](https://sethrobertson.github.io/GitFixUm/fixup.html). - -### Ignore files having local changes - -If you need to make changes to a file that are local you can run -`config update-index --skip-worktree `. -Following this the file won't show up as having changes from the upstream. -Note that files tagged with this command are checked out sparsly, so you need -to watch out for changes yourself if there are any. -To revert this run `config update-index --no-skip-worktree `. - -### Authentication via SSH - -Authentication by default is done via a username and a password. -For some services such as Github. -it is not possible to use password as an authentication method. -The other possibility to authenticate to git is by using -[SSH](/wiki/linux/ssh.md). - -For this a -[SSH certificate has to be created](/wiki/linux/ssh.md#generate-new-keys) and -[added to the authentication agent](/wiki/linux/ssh.md#adding-keys-to-authentication-agent). -Afterwards it the public SSH key to be added to the git server. -For Github there is -[a guide on that topic](https://docs.github.com/en/get-started/getting-started-with-git/why-is-git-always-asking-for-my-password). - -Following these the git repositories have to be cloned in a special way to use -SSH instead of password and username. -The following shows both the normal way and the SSH way to clone git -repositories. - -```ssh -git clone ssh://git@github.com:tiyn/wiki -git clone https://github.com/tiyn/wiki -``` - -By using the SSH config file the clone command can be shortened to -`git clone github:tiyn/wiki`. -For this follow the -[corresponding section in the SSH entry](/wiki/linux/ssh.md#shorten-ssh-connection-commands). -Set `Host` to `github`, `HostName` to `github.com` and `User` to `git`. diff --git a/wiki/linux/git_(client).md b/wiki/linux/git_(client).md new file mode 100644 index 0000000..0fc3baf --- /dev/null +++ b/wiki/linux/git_(client).md @@ -0,0 +1,91 @@ +# Git (Client) + +This entry deals with the Git client used in +[Linux-based systems](/wiki/linux/linux.md). +The client is pretty simple to understand. +With only a handfull of commands you should be able to get your versioning going. +For servers with web interfaces there are different cli tools to control it +without using a browser. + + +## Setup + +On most linux distributions BlueZ can be installed with the `bluez` package. + +## Usage + +This section addresses various use cases of git. + +There is also an interactive +[fixup guide by Seth Robertson](https://sethrobertson.github.io/GitFixUm/fixup.html). + +### Ignore files having local changes + +If you need to make changes to a file that are local you can run +`config update-index --skip-worktree `. +Following this the file won't show up as having changes from the upstream. +Note that files tagged with this command are checked out sparsly, so you need +to watch out for changes yourself if there are any. +To revert this run `config update-index --no-skip-worktree `. + +### Authentication via SSH + +Authentication by default is done via a username and a password. +For some services such as Github. +it is not possible to use password as an authentication method. +The other possibility to authenticate to git is by using +[SSH](/wiki/linux/ssh.md). + +For this a +[SSH certificate has to be created](/wiki/linux/ssh.md#generate-new-keys) and +[added to the authentication agent](/wiki/linux/ssh.md#adding-keys-to-authentication-agent). +Afterwards it the public SSH key to be added to the git server. +For Github there is +[a guide on that topic](https://docs.github.com/en/get-started/getting-started-with-git/why-is-git-always-asking-for-my-password). + +Following these the git repositories have to be cloned in a special way to use +SSH instead of password and username. +The following shows both the normal way and the SSH way to clone git +repositories. + +```ssh +git clone ssh://git@github.com:tiyn/wiki +git clone https://github.com/tiyn/wiki +``` + +By using the SSH config file the clone command can be shortened to +`git clone github:tiyn/wiki`. +For this follow the +[corresponding section in the SSH entry](/wiki/linux/ssh.md#shorten-ssh-connection-commands). +Set `Host` to `github`, `HostName` to `github.com` and `User` to `git`. + +### Improved `git diff` + +[Diff So Fancy](https://github.com/so-fancy/diff-so-fancy) is a drop in +replacement for the default `git diff` look. +It can be installed via the +[repository](https://github.com/so-fancy/diff-so-fancy) or the `diff-so-fancy` +package. +Afterwards the following lines need to be run to complete the configuration. + +```sh +# switch to diff-so-fancy +git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX" +git config --global interactive.diffFilter "diff-so-fancy --patch" + +# color improvements +git config --global color.ui true + +git config --global color.diff-highlight.oldNormal "red bold" +git config --global color.diff-highlight.oldHighlight "red bold 52" +git config --global color.diff-highlight.newNormal "green bold" +git config --global color.diff-highlight.newHighlight "green bold 22" + +git config --global color.diff.meta "11" +git config --global color.diff.frag "magenta bold" +git config --global color.diff.func "146 bold" +git config --global color.diff.commit "yellow bold" +git config --global color.diff.old "red bold" +git config --global color.diff.new "green bold" +git config --global color.diff.whitespace "red reverse" +```