Outils pour utilisateurs

Outils du site


prog:git

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
prog:git [2023/07/28 08:35] – [Cloner et configurer d'un dépôt] : précision sur --global rootprog:git [2024/12/28 22:06] (Version actuelle) – Ajout de "error: object file .git/objects/a3/02c397c3b0c0c8959b35778c1705a89108fdb2 is empty" root
Ligne 17: Ligne 17:
 git config --global pager.diff false git config --global pager.diff false
 git config --global pager.grep false git config --global pager.grep false
 +# lfs
 +git config --global lfs.locksverify true
 </code> </code>
 +
 +[[prive:prog:git|Données privées]]
  
 Si le dépôt demande constamment le mot de passe, il faut soit configurer l'utilisation de clés privées / publiques SSH et utiliser le protocole ''git@'', soit stocker les mots de passe (en clair sur le disque) et utiliser ''https:%%//%%'' : Si le dépôt demande constamment le mot de passe, il faut soit configurer l'utilisation de clés privées / publiques SSH et utiliser le protocole ''git@'', soit stocker les mots de passe (en clair sur le disque) et utiliser ''https:%%//%%'' :
Ligne 100: 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/master 
 +rm -Rf path/to/B 
 +git read-tree --prefix=path/to/B -u Bproject/master 
 +git commit -m "Merge B project as our subdirectory" 
 +</code> 
 + 
 +Supprimer le submodule des fichiers ''.gitmodules'', ''.git/config'' et supprimer le dossier ''.git/modules/path/to/B'' 
 + 
 +<code bash> 
 +git add .gitmodules 
 +git commit -m "Remove submodule B project" 
 +</code> 
 + 
 +[[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 118: Ligne 141:
 git update-ref -d refs/original/refs/heads/tmp git update-ref -d refs/original/refs/heads/tmp
 </code> </code>
 +
 +[[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}}
 +
  
 ====Dupliquer un dépôt==== ====Dupliquer un dépôt====
Ligne 190: Ligne 216:
 {{:prog:git:git_merge.png?350|}} {{:prog:git:git_merge.png?350|}}
  
-====Gestion des conflits====+====Gestion des conflits lors d'un push====
   git push --force-with-lease   git push --force-with-lease
  
Ligne 406: Ligne 432:
  
 [[https://stackoverflow.com/questions/43974371/run-git-clang-format-on-series-of-git-commits|Run git-clang-format on series of git commits]] {{ :prog:git:formatting_-_run_git-clang-format_on_series_of_git_commits_-_stack_overflow_27_03_2023_10_03_57_.html |Archive du 15/05/2017 le 27/03/2023}} [[https://stackoverflow.com/questions/43974371/run-git-clang-format-on-series-of-git-commits|Run git-clang-format on series of git commits]] {{ :prog:git:formatting_-_run_git-clang-format_on_series_of_git_commits_-_stack_overflow_27_03_2023_10_03_57_.html |Archive du 15/05/2017 le 27/03/2023}}
 +
 +=====É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;
 +</code>
 +
 +Pour utiliser ''%%git diff-index --name-only HEAD --%%'', il est nécessaire d'appeler ''%%git update-index --refresh%%''. [[https://stackoverflow.com/questions/34807971/why-does-git-diff-index-head-result-change-for-touched-files-after-git-diff-or-g|Why does git diff-index HEAD result change for touched files after git diff or git status?]] {{ :prog:git:why_does_git_diff-index_head_result_change_for_touched_files_after_git_diff_or_git_status_-_stack_overflow_1_19_2024_4_04_53_pm_.html |Archive du 15/01/2016 le 19/01/2024}}
 +
 +  * Si des fichiers non ignorés ont été ajoutés
 +
 +<code bash>
 +if [ -n "$(git ls-files --others --exclude-standard)" ]
 +</code>
  
 =====Maintenance===== =====Maintenance=====
-====Suppression des dangling blobs====+====Vérifie l'état d'un dépôt==== 
 <code bash> <code bash>
-git gc --prune="0 days"+git fsck --no-dangling
 </code> </code>
 +
 +<code>
 +$ git fsck --no-dangling
 +error: corrupt loose object '2a9e451f85ba5e26dbe34d742105e877b0942570'
 +error: unable to unpack contents of .git/objects/2a/9e451f85ba5e26dbe34d742105e877b0942570
 +error: 2a9e451f85ba5e26dbe34d742105e877b0942570: object corrupt or missing: .git/objects/2a/9e451f85ba5e26dbe34d742105e877b0942570
 +Checking object directories: 100% (256/256), done.
 +Checking objects: 100% (812/812), done.
 +missing tree 2a9e451f85ba5e26dbe34d742105e877b0942570
 +</code>
 +
 +====Savoir à quel commit appartient un blob====
 +
 +<code bash>
 +git log --raw --all --find-object=<blob hash>
 +</code>
 +
 +et pour un objet LFS
 +
 +<code bash>
 +git log -S<SHA>
 +</code>
 +
 +====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
 +</code>
 +====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
 </code> </code>
  
Ligne 422: Ligne 517:
 <code bash> <code bash>
 git checkout --orphan master git checkout --orphan master
-git gc --aggressive --prune=all+git gc --prune=all
 </code> </code>
  
Ligne 567: Ligne 662:
 [[https://stackoverflow.com/questions/23885449/unable-to-resolve-unable-to-get-local-issuer-certificate-using-git-on-windows|Unable to resolve "unable to get local issuer certificate" using git on Windows with self-signed certificate]] {{ :prog:git:unable_to_resolve_unable_to_get_local_issuer_certificate_using_git_on_windows_with_self-signed_certificate_-_stack_overflow_27_02_2023_16_06_21_.html |Archive du 27/05/2015 le 27/02/2023}} [[https://stackoverflow.com/questions/23885449/unable-to-resolve-unable-to-get-local-issuer-certificate-using-git-on-windows|Unable to resolve "unable to get local issuer certificate" using git on Windows with self-signed certificate]] {{ :prog:git:unable_to_resolve_unable_to_get_local_issuer_certificate_using_git_on_windows_with_self-signed_certificate_-_stack_overflow_27_02_2023_16_06_21_.html |Archive du 27/05/2015 le 27/02/2023}}
  
 +====fatal: unable to access 'xxxxx.git/': error setting certificate file: xxxx\CI_SERVER_TLS_CA_FILE====
 +
 +L'option ''credential.helper'' est configuré à ''store'' et le mot de passe défini dans le fichier ''.git-credentials'' est faux.
 +
 +====error: object file .git/objects/a3/02c397c3b0c0c8959b35778c1705a89108fdb2 is empty====
 +
 +Pour éviter de devoir tout cloner à nouveau et devoir tout recompiler, il faut tester :
 +
 +<code bash>
 +find .git/objects/ -size 0 -delete
 +git fetch
 +</code>
 +
 +[[https://stackoverflow.com/questions/4111728/how-do-i-deal-with-corrupted-git-object-files|How do I deal with corrupted Git object files?]] {{ :prog:git:how_do_i_deal_with_corrupted_git_object_files_-_stack_overflow_28_12_2024_22_04_15_.html |Archive du 06/11/2010 le 28/12/2024}}
 =====Windows===== =====Windows=====
 [[https://gitforwindows.org|Site Web]], {{ :prog:git:git-2.21.0-64-bit.exe |Archive git gui 64 bit 2.21.0 (26/02/2019)}} [[https://gitforwindows.org|Site Web]], {{ :prog:git:git-2.21.0-64-bit.exe |Archive git gui 64 bit 2.21.0 (26/02/2019)}}
prog/git.1690526149.txt.gz · Dernière modification : 2023/07/28 08:35 de root