prog:git
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
prog:git [2023/08/23 14:25] – [Gestion des conflits] -> ... lors d'un push root | prog:git [2024/12/28 22:06] (Version actuelle) – Ajout de "error: object file .git/objects/a3/02c397c3b0c0c8959b35778c1705a89108fdb2 is empty" root | ||
---|---|---|---|
Ligne 20: | Ligne 20: | ||
git config --global lfs.locksverify true | git config --global lfs.locksverify true | ||
</ | </ | ||
+ | |||
+ | [[prive: | ||
Si le dépôt demande constamment le mot de passe, il faut soit configurer l' | Si le dépôt demande constamment le mot de passe, il faut soit configurer l' | ||
Ligne 102: | Ligne 104: | ||
====Fusionner deux dépôts en un seul==== | ====Fusionner deux dépôts en un seul==== | ||
- | [[https://blog.rom1v.com/2017/07/fusionner-deux-depots-git/|Fusionner deux dépôts git]] {{ :prog:git:fusionner_deux_depots_git_rom1v_blog_2019-10-22_13_30_34_.html |Archive du 12/07/2017 le 22/10/2019}} | + | Depuis le projet A : |
+ | |||
+ | <code bash> | ||
+ | git remote add -f Bproject path/to/B | ||
+ | git merge -s ours --no-commit --allow-unrelated-histories Bproject/ | ||
+ | rm -Rf path/to/B | ||
+ | git read-tree --prefix=path/ | ||
+ | git commit -m "Merge B project as our subdirectory" | ||
+ | </ | ||
+ | |||
+ | Supprimer le submodule des fichiers '' | ||
+ | |||
+ | <code bash> | ||
+ | git add .gitmodules | ||
+ | git commit -m " | ||
+ | </ | ||
+ | |||
+ | [[https://stackoverflow.com/questions/23327701/git-merge-submodule-into-parent-tree-cleanly-and-preserving-commit-history|Git merge submodule into parent tree cleanly and preserving commit history]] {{ :prog:git:git_merge_submodule_into_parent_tree_cleanly_and_preserving_commit_history_-_stack_overflow_22_09_2023_12_24_09_.html |Archive du 27/04/2014 le 22/09/2023}} | ||
+ | |||
+ | Ou | ||
<code bash> | <code bash> | ||
Ligne 120: | Ligne 141: | ||
git update-ref -d refs/ | git update-ref -d refs/ | ||
</ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
====Dupliquer un dépôt==== | ====Dupliquer un dépôt==== | ||
Ligne 408: | Ligne 432: | ||
[[https:// | [[https:// | ||
+ | |||
+ | =====État du dépôt===== | ||
+ | |||
+ | ====bash==== | ||
+ | |||
+ | * Si des fichiers ont été modifiés | ||
+ | |||
+ | <code bash> | ||
+ | if [[ ! -z "$(git status --porcelain)" | ||
+ | then | ||
+ | echo "Some files has been modified." | ||
+ | exit 1 | ||
+ | fi; | ||
+ | </ | ||
+ | |||
+ | Pour utiliser '' | ||
+ | |||
+ | * Si des fichiers non ignorés ont été ajoutés | ||
+ | |||
+ | <code bash> | ||
+ | if [ -n "$(git ls-files --others --exclude-standard)" | ||
+ | </ | ||
=====Maintenance===== | =====Maintenance===== | ||
Ligne 425: | Ligne 471: | ||
missing tree 2a9e451f85ba5e26dbe34d742105e877b0942570 | missing tree 2a9e451f85ba5e26dbe34d742105e877b0942570 | ||
</ | </ | ||
- | ====Suppression des dangling blobs==== | + | |
+ | ====Savoir à quel commit appartient un blob==== | ||
<code bash> | <code bash> | ||
- | git gc --prune="0 days" | + | git log --raw --all --find-object=<blob hash> |
</ | </ | ||
+ | |||
+ | et pour un objet LFS | ||
+ | |||
+ | <code bash> | ||
+ | git log -S< | ||
+ | </ | ||
+ | |||
+ | ====Avoir tous les enfants d'un commit==== | ||
+ | |||
+ | <code bash> | ||
+ | find_descendants() { | ||
+ | local sha=$1 | ||
+ | line=$(git rev-list --all --children | grep ^$sha) | ||
+ | |||
+ | if [[ $line == *" "* ]]; then | ||
+ | children=$(echo $line | cut -d' ' -f2-) | ||
+ | for child in $children; do | ||
+ | echo $child | ||
+ | find_descendants $child | ||
+ | done | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | find_descendants $1 | ||
+ | </ | ||
+ | ====Suppression des dangling blobs==== | ||
Ces commits inachevés sont détectés par la commande | Ces commits inachevés sont détectés par la commande | ||
<code bash> | <code bash> | ||
git fsck | git fsck | ||
+ | git reflog expire --expire-unreachable=now --expire=now --all --dry-run | ||
+ | git reflog expire --expire-unreachable=now --expire=now --all | ||
+ | git gc --prune=now | ||
+ | git repack | ||
</ | </ | ||
Ligne 439: | Ligne 517: | ||
<code bash> | <code bash> | ||
git checkout --orphan master | git checkout --orphan master | ||
- | git gc --aggressive | + | git gc --prune=all |
</ | </ | ||
Ligne 584: | Ligne 662: | ||
[[https:// | [[https:// | ||
+ | ====fatal: unable to access ' | ||
+ | |||
+ | L' | ||
+ | |||
+ | ====error: object file .git/ | ||
+ | |||
+ | Pour éviter de devoir tout cloner à nouveau et devoir tout recompiler, il faut tester : | ||
+ | |||
+ | <code bash> | ||
+ | find .git/ | ||
+ | git fetch | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
=====Windows===== | =====Windows===== | ||
[[https:// | [[https:// |
prog/git.1692793548.txt.gz · Dernière modification : 2023/08/23 14:25 de root