User Tools

Site Tools


git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
git [2024/04/11 16:58] – [git at dlma.com] dblumegit [2025/07/08 16:13] (current) – [Building Git] dblume
Line 1: Line 1:
 ====== git ====== ====== git ======
 +
 +===== Building Git =====
 +
 +In Ubuntu, get some dev libs first:
 +
 +<code bash>
 +sudo apt-get install libssl-dev libcurl4-gnutls-dev gettext
 +</code>
 +There was [[https://lore.kernel.org/git/xmqq5xg2wrd1.fsf@gitster.g/|a security fix in 2.50.1]], so here we get that one:
 +<code bash>
 +git clone --filter=blob:none -b v2.50.1 --single-branch --no-tags https://github.com/git/git
 +# or: git clone --branch v2.50.1 --depth 1 https://github.com/git/git
 +# or even: wget https://www.kernel.org/pub/software/scm/git/git-2.50.1.tar.xz
 +
 +make prefix=$HOME/.local -j$(nproc)
 +make prefix=$HOME/.local install
 +</code>
 +
 +This will put git in ''$HOME/.local/bin/''
 +
 +===== Using Git =====
  
 Make the clone of the remote repository. Make the clone of the remote repository.
Line 210: Line 231:
 git$ cd testcode.git/ git$ cd testcode.git/
 testcode.git$ git init --bare testcode.git$ git init --bare
 +testcode.git$ git config pack.threads 8  # Otherwise clone might fail with "unable to create thread"
 </code> </code>
  
Line 250: Line 272:
  
 The submodule one is an optimization for the more general: The submodule one is an optimization for the more general:
 +<code bash>
 +git submodule update --recursive  # Add --init before --recursive on first time
 +</code>
 +
 +====== Submodules ======
 +
 +[[https://www.cyberdemon.org/2024/03/20/submodules.html|Demystifying git submodules]] is [[https://social.jvns.ca/@b0rk/112604915327918216|summarized by Julia Evans in a 'zine page here]].
 +
 +Cloning a repo doesn't download its submodules. After cloning, run:
 +
 +<code bash>
 +git submodule update --init --recursive
 +</code>
 +
 +Git pull and checkout don't update submodules. To actually update them, you have to run the following every time you switch branches or pull.
 +
 <code bash> <code bash>
 git submodule update --recursive  # Add --init before --recursive on first time git submodule update --recursive  # Add --init before --recursive on first time
git.1712879885.txt.gz · Last modified: 2024/04/11 16:58 by dblume