Table of Contents

GIT

Preparation

bash completion

A1.6 Appendix A: Git in Other Environments - Git in Bash

Package git contains:

/etc/bash_completion.d/git-prompt
/usr/share/bash-completion/completions/git
/usr/share/bash-completion/completions/gitk
~/.bashrc
. /usr/share/bash-completion/completions/git
. /usr/lib/git-core/git-sh-prompt
 
if [ "$color_prompt" = yes ]; then
#   PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 "(%s)")\[\033[00m\]\$ '
else
#   PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\'$(__git_ps1 "(%s)")'\$ '
fi

git-email

sudo apt-get install git-email
git config sendemail.signedoffcc false
git config sendemail.suppressfrom true

NOTE: Github was disabled git protocol. So only https: or ssh git@ is valid.

git config --global url.https://github.com/daurnimator/lua-systemd.insteadOf git://github.com/daurnimator/lua-systemd
# or
git config --global url.https://.insteadOf git://

Keywords: git protocol, git: protocol

git config --global url.git@github.com:.insteadOf https://github.com/

Import HG (mercurial) repo

sudo apt-get install hg-fast-export
git init
hg-fast-export -r .

Usage

fetch moved tags

git fetch origin --tags --force

Undo a commit

Undo a commit and redo

$ git commit ...              
$ git reset --soft HEAD~1     
<< edit files as necessary >> 
$ git add ....                
$ git commit -c ORIG_HEAD     

Local copy of one branch from public repo

git remote add ti git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
git remote add tilocal /home/user/mirrors/ti-linux-kernel
git fetch ti refs/heads/ti-linux-3.14.y 
git checkout ti-linux-3.14.y

Now we have latest version from ti-linux-3.14.y branch. Add our local GitLab server

git remote add gitlab ssh://path... 

And push current branch (we are on ti-linux-3.14.y after checkout)

git push -u gitlab

repo clean and repack

git reflog expire --expire=1.minute refs/heads/master
git fsck --unreachable      
git prune                   
git gc                

Debug

GIT_TRACE=1 git clone ...
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git clone ...