git
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| git [2023/05/08 19:57] – [Resolving a Merge Conflict] dblume | git [2025/11/16 23:35] (current) – 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 | ||
| + | </ | ||
| + | There was [[https:// | ||
| + | <code bash> | ||
| + | git clone --filter=blob: | ||
| + | # or: git clone --branch v2.50.1 --depth 1 https:// | ||
| + | # or even: wget https:// | ||
| + | |||
| + | make prefix=$HOME/ | ||
| + | make prefix=$HOME/ | ||
| + | </ | ||
| + | |||
| + | This will put git in '' | ||
| + | |||
| + | ===== Using Git ===== | ||
| Make the clone of the remote repository. | Make the clone of the remote repository. | ||
| Line 24: | Line 45: | ||
| git@fake.github.com: | git@fake.github.com: | ||
| </ | </ | ||
| + | |||
| + | Eventually, if you want to add another branch to a single-branch clone: | ||
| + | |||
| + | git remote set-branches --add origin another-branch | ||
| + | |||
| + | Or to de-single-branch-ize a clone: | ||
| + | |||
| + | git remote set-branches origin " | ||
| + | |||
| ===== Creating a new remote repository from an existing local one ===== | ===== Creating a new remote repository from an existing local one ===== | ||
| Line 201: | 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 " | ||
| </ | </ | ||
| Line 215: | Line 246: | ||
| </ | </ | ||
| - | I could' | + | Options are: |
| + | |||
| + | * I chose GitHub-like [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| ====== Limit scope of huge repos ====== | ====== Limit scope of huge repos ====== | ||
| Line 238: | Line 275: | ||
| git submodule update --recursive | git submodule update --recursive | ||
| </ | </ | ||
| + | |||
| + | ====== Submodules ====== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Cloning a repo doesn' | ||
| + | |||
| + | <code bash> | ||
| + | git submodule update --init --recursive | ||
| + | </ | ||
| + | |||
| + | 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> | ||
| + | git submodule update --recursive | ||
| + | </ | ||
| + | |||
| + | ====== You Don't Need GitHub ====== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | * Set "git config receive.denyCurrentBranch updateInstead" | ||
| + | * Create a .git/ | ||
| + | * Tell git to host the remote repo with "git update-server-info" | ||
| ====== git vim mergetool on macOS ====== | ====== git vim mergetool on macOS ====== | ||
git.1683601065.txt.gz · Last modified: 2023/05/08 19:57 by dblume