Qanuq - checkouthttp://www.qanuq.com/2021-12-07T14:17:25+01:00SysAdmin et DéveloppementTrouver la date de suppression d’un fichier dans un dépôt git2019-09-08T00:00:00+02:002021-12-07T14:17:25+01:00Matthieu Petiottag:www.qanuq.com,2019-09-08:/2019/09/08/trouver-date-suppression-fichier-git/<p>Voici comment trouver la date et la révision d’un fichier supprimé dans git.</p><p>Cet article fait partie d’une longue série en cours d’écriture consacrée à git.</p>
<h2 id="trouver-la-date-de-suppression-et-la-revision-dun-fichier-supprime-dans-git"><a class="toclink" href="#trouver-la-date-de-suppression-et-la-revision-dun-fichier-supprime-dans-git">Trouver la date de suppression et la révision d’un fichier supprimé dans git</a></h2>
<p>Un fichier a été supprimé de votre dépôt git. Vous avez besoin de savoir quand,
par qui et pourquoi il a été effacé ? Pas besoin d’aller regarder le détail de
tous les commits. Voici comment faire.</p>
<p>Pour ce faire, on va utiliser la commande <a href="https://git-scm.com/docs/git-log">git log</a> et son argument
<code>--full-history</code>. Ce dernier est important car il évite une simplification de
l’historique que peut faire git lorsqu’il y a des branches qui sont mergées…
et le commit en question pourrait tout simplement ne pas apparaître dans
certaines conditions. L’argument <code>--all</code> permet de rechercher dans toutes les branches.</p>
<div class="highlight"><pre><span></span><code>git log --all --full-history -1 -- chemin/vers/mon/fichier_supprimé.txt
</code></pre></div>
<p>Et comme la suppression du fichier est forcément la dernière action effectuée,
on n’affiche qu’un résultat via l’argument <code>-1</code>.</p>
<p>Si on ne connait pas le chemin ou nom exact, on pourra utiliser des <code>*</code> dans
le nom.</p>
<div class="highlight"><pre><span></span><code>git log --all --full-history -- <span class="se">\*\*</span>/fichier<span class="se">\*</span>supprim<span class="se">\*</span>.txt
</code></pre></div>
<p>Si on a ensuite besoin de voir son contenu, rien de plus simple :</p>
<div class="highlight"><pre><span></span><code>git show c0ebda56 -- chemin/vers/mon/fichier_supprimé.txt
</code></pre></div>
<p>Où <code>c0ebda56</code> représente le hash de mon commit précédemment trouvé.</p>
<p>On peut également le restaurer dans la copie de travail :</p>
<div class="highlight"><pre><span></span><code>git checkout c0ebda56^ -- chemin/vers/mon/fichier_supprimé.txt
</code></pre></div>
<p>Le symbole <code>^</code> permet de faire le <code>checkout</code> juste avant le commit trouvé,
puisque ce dernier est le commit où le fichier est supprimé, il faut donc
prendre le commit précédent.</p>