2011-08-18 2 views
-1

Je suis nouveau à GIT et scénario de visage comme suit:problème avec GIT traction remplaçant code précédent

fichier push ci-dessous:

index.php

$name = "steve"; 

echo("good morning"); 
echo($name); 

Extrayez le fichier, puis supprimer la variable $ name par accident.

echo("good morning"); 
echo($name); 

Sans le savoir, tirez et poussez le nouveau code vers le serveur. Le problème est que le code est cassé et ne fonctionne plus, GIT ne demandera pas le retrait de la ligne. Y at-il de toute façon pour résoudre un tel scénario?

Répondre

0

Pour être en mesure de gérer cela, Git devrait avoir une connaissance du contenu que vous êtes en train de développer. Dans votre cas, Git devrait savoir que la suppression de $name = "steve"; dans un fichier .php produirait une erreur.

Mais cela pourrait être parfaitement bien pour le fichier .txt simple où vous écrivez juste le texte.

Non le pull remplace le code précédent mais fait fait. Vous avez supprimé la ligne, vous avez dit à Git de valider cette version, vous avez retiré cette version du repo distant. Et tout ça s'est bien passé.

La meilleure façon de résoudre un tel scénario est éviter par test votre code avant de pousser.


Si ce scénario se produit malgré un contrôle minutieux, vous pouvez bien sûr utiliser Git pour restaurer la dernière version qui a été vérifié et de travail en utilisant

git checkout <SHA-HASH> -- index.php 

<SHA-HASH> est commit-ID la dernière bonne version de index.php.

+0

Est-ce qu'il y a une quelconque façon de demander à GIT de demander une révision manuelle pour la suppression de ligne, tout comme le fichier avec un conflit de ligne? Parce que, il serait trop facile de casser le code, était curieux de connaître les meilleures pratiques sur la façon de maintenir l'intégrité sans jeter beaucoup de script de test. – TonyTakeshi

+0

@TonyMocha: non, il n'y en a pas. Comme dans tous les autres VCS. – eckes

+2

La suppression de lignes est une partie parfaitement normale de la maintenance logicielle. Un VCS qui l'a averti serait presque inutilisable. –

0

La solution ici est d'être conscient de ce que vous changez. Dans git, cela signifie en utilisant

git diff 

pour vérifier ce code a changé avant d'ajouter un fichier à l'index. Vous pouvez également utiliser gitk pour voir vos modifications. Ils apparaîtront sous la forme d'un point rouge marqué "Modifications locales non validées, non enregistrées dans l'index".

Si le problème provient de l'ajout d'un fichier entier à l'index, lorsque vous ne souhaitez que certains des changements d'aller, voici une méthode que vous pouvez utiliser pour ajouter des morceaux individuels de code:

git add -p 

Ceci va parcourir les différents bits de code modifiés et vous demander, pour chacun d'eux, si vous voulez l'ajouter ou non à l'index. Donc, si vous avez des changements dans un fichier qui doit être archivé, alors que d'autres sont juste pour l'expérimentation ou le débogage, vous pouvez utiliser git add -p pour ajouter seulement ceux qui devraient vraiment être archivés.

Questions connexes