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/03/27 10:04] – Ajout de "Modifier une liste de commits" rootprog:git [2024/08/19 10:36] (Version actuelle) – Ajout de "Savoir à quel commit appartient un blob" root
Ligne 4: Ligne 4:
 git clone https://github.com/bansan85/2lgc.git git clone https://github.com/bansan85/2lgc.git
 </code> </code>
-Mais surtout, ne pas oublier :+Mais surtout, ne pas oublier (l'option ''--global'' configure tous les dépôts et pas uniquement le dépôt courant) :
  
 <code bash> <code bash>
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>
 +====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 492:
 <code bash> <code bash>
 git checkout --orphan master git checkout --orphan master
-git gc --aggressive --prune=all+git gc --prune=all
 </code> </code>
  
Ligne 566: Ligne 636:
  
 [[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.
  
 =====Windows===== =====Windows=====
prog/git.1679904264.txt.gz · Dernière modification : 2023/03/27 10:04 de root