Comment cloner un ancien git-commit (et quelques autres questions sur git)

J’ai un git-repository de mon projet avec environ 20 commits. Je sais comment cloner le commit avec git clone ,

  • mais comment puis-je “cloner” un ancien commit?
  • y a-t-il un très bon git-GUI ( qgit n’est pas une bonne interface graphique)?
  • que sont exactement les “twigs”?
  • Quand je veux sortir 0.1, 0.2 et ainsi de suite, quelle est la meilleure façon de marquer ces commits dans git?
  • Quelles sont les grandes différences avec svn?

Un repository git contient l’historique complet à tout moment.
Donc, lorsque vous clonez un référentiel, vous le clonez avec son historique complet, puis vous pouvez créer une twig à partir de la validation souhaitée:

  $ git checkout -b aNewBranch SHA1 

avec SHA1 représentant l’ID de validation à partir duquel vous voulez continuer.


Les twigs dans Git sont juste un moyen de garder la trace d’un chemin d’un DAG (Directed Acyclic Graph) qui est l’ensemble des commits représentant l’historique d’un repository Git.
Il s’agit d’un simple pointeur que vous atsortingbuez à l’un de ces commits, et il continuera à avancer avec chaque nouvelle validation.

branches

Voir le livre Pro Git pour plus d’informations.


Vous pouvez marquer un commit spécifique avec une balise , qui, comme une twig, est un simple pointeur, mais immuable (elle ne bouge pas lorsque vous effectuez une nouvelle validation).
Vous utiliserez de préférence des balises annotées , stockées comme des objects complets dans la firebase database Git. Ils sont maillot de bain; contient le nom de tagger, l’e-mail et la date; avoir un message de marquage; et peut être signé et vérifié avec GNU Privacy Guard (GPG).


La section “Interfaces graphiques” de la page InterfacesFrontendsAndTools sur Git Wiki répertorie les différentes interfaces graphiques pour Git en ce moment.


Vous verrez beaucoup de questions sur la différence entre Git et SVN: voyez ma réponse (ou celle-ci ) par exemple.
Ma réponse la plus complète sur les différences fondamentales entre Git et SVN est la suivante:
“lequel des deux est le meilleur: git ou SVN” .

Il y a quelques questions dans cet article, voici quelques réponses:

Tout d’abord, pour “cloner” un précédent commit, vous pouvez faire quelque chose comme ceci:

 git clone REPO_URL git checkout HEAD~1 // checks out the last commit's first parent 

Utilisez ~1 pour accéder au premier parent du dernier commit et incrémentez le nombre pour obtenir le parent du parent, etc. Plus d’informations sur la notation tilde et caret .

Les deux commandes ci-dessus vous placent dans un état HEAD détaché, qui peut ou peut ne pas être important en fonction du contexte. Par exemple, il n’est pas important que vous fassiez du clonage dans le cadre de vos scripts de déploiement et que vous n’accédiez qu’à une validation précédente (par exemple, dans le cadre d’une stratégie de restauration).

Si vous devez commencer à travailler à partir de ce moment, vous pouvez exécuter

 git checkout -b NEW_BRANCH_NAME 

Une bonne interface graphique? Pour moi, SourceTree est le meilleur.

Que sont les twigs? Selon mes propres mots, une succursale est un moyen très simple de pivoter. Disons que vous travaillez sur une twig, master et que vous voulez essayer une expérience. Easy, juste git checkout -b experiment et vous êtes rapidement dans un endroit sûr pour casser des trucs.

Quelle est la différence entre git et svn?

git est un système de contrôle de version dissortingbué . svn n’est pas En outre, le twigment (mentionné ci-dessus) est plus facile dans git.

Pour le marquage, je ne sais pas s’il y a “One True Way” (existe-t-il déjà?) Mais explorez simplement la commande git tag . Une chose intéressante à propos de git est la facilité avec laquelle vous pouvez copier un duplicata de votre repository sur votre ordinateur local (ou ailleurs) et faire ce que vous voulez et voir ce qui se passe. Si vous gâchez quelque chose, supprimez simplement le répertoire. Donc, vous pouvez expérimenter avec git tag dans un répertoire de test et voir ce que vous aimez.