git
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
git [2023/01/23 15:23] – dblume | git [2024/06/12 11:29] (current) – dblume | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== git ====== | ====== git ====== | ||
- | Make the clone at the remote repository. | + | Make the clone of the remote repository. |
< | < | ||
Line 10: | Line 10: | ||
git remote add upstream git:// | git remote add upstream git:// | ||
</ | </ | ||
+ | |||
+ | If it's a huge repo, [[https:// | ||
+ | |||
+ | < | ||
+ | git clone \ | ||
+ | --filter=blob: | ||
+ | -b main \ | ||
+ | --single-branch \ | ||
+ | --no-tags \ | ||
+ | --shallow-submodules \ | ||
+ | --recurse-submodules=os/ | ||
+ | --recurse-submodules=': | ||
+ | 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 54: | Line 77: | ||
$ git push --set-upstream origin new_branch | $ git push --set-upstream origin new_branch | ||
+ | ==== Creating a local branch from an existing remote ==== | ||
+ | |||
+ | After doing a fetch, and suppose " | ||
+ | |||
+ | $ git switch remote-branch | ||
==== Changing a local branch to a new remote branch ==== | ==== Changing a local branch to a new remote branch ==== | ||
Line 96: | Line 124: | ||
git switch main | git switch main | ||
git branch -d bugfix/ | git branch -d bugfix/ | ||
+ | git pull | ||
+ | </ | ||
+ | |||
+ | ====== Resolving a Merge Conflict ====== | ||
+ | |||
+ | < | ||
+ | git mergetool (possibly with filename) | ||
+ | |||
+ | # +----------+-----------+------------------+ | ||
+ | # | (others) | (common) | ||
+ | # | LOCAL | BASE | REMOTE | ||
+ | # +-----------------------------------------+ | ||
+ | # | | | ||
+ | # | temp file with <<< | ||
+ | # +-----------------------------------------+ | ||
+ | |||
+ | git commit -a -m " | ||
+ | </ | ||
+ | |||
+ | Possibly keep rebasing. | ||
+ | < | ||
+ | git rebase --continue | ||
git pull | git pull | ||
</ | </ | ||
Line 122: | Line 172: | ||
<code bash> | <code bash> | ||
git pull --rebase | git pull --rebase | ||
+ | </ | ||
+ | |||
+ | ====== Applying changes in a stash to a changed file ===== | ||
+ | |||
+ | When '' | ||
+ | |||
+ | < | ||
+ | git stash show -p | patch -p0 | ||
</ | </ | ||
Line 166: | Line 224: | ||
</ | </ | ||
- | I could' | + | Options are: |
+ | |||
+ | * I chose GitHub-like [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
====== Limit scope of huge repos ====== | ====== Limit scope of huge repos ====== | ||
Line 183: | Line 247: | ||
git pull --no-tags origin main | git pull --no-tags origin main | ||
git submodule foreach git pull --no-tags origin main | git submodule foreach git pull --no-tags origin main | ||
+ | </ | ||
+ | |||
+ | The submodule one is an optimization for the more general: | ||
+ | <code bash> | ||
+ | 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 | ||
</ | </ | ||
git.1674516215.txt.gz · Last modified: 2023/04/12 20:44 (external edit)