IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GIT Discussion :

Cherche des points de repère sur Git


Sujet :

GIT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 863
    Par défaut Cherche des points de repère sur Git
    Bonjour tout le monde,

    Il est temps que je m'intéresse de plus près à Git, car j'en suis arrivé au stade où j'avais un projet qui tournait bien, et dès que j'ai demandé à Git de faire quoi que ce soit ça a tout planté, le projet ne pouvait plus être exécuté.

    Avec une doc sur la ligne de commandes ("Git Notes for professionals", de https://goalkicker.com/GitBook/)

    j'ai pu un peu reprendre pied, et mon projet pouvait de nouveau s'exécuter.

    Ensuite je me suis dit que j'allais pouvoir faire du travail propre, puisqu'en cas de fausse manœuvre je pourrais revenir au commit qui m'intéresse.

    Moui, bon, ça, c'est le principe.

    Mais voilà un dialogue qui ne me plaît pas des masses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    git pull 6053b253a801c95672f216b0a85ac1ddda14aaab --rebase
    fatal: '6053b253a801c95672f216b0a85ac1ddda14aaab' does not appear to be a git repository
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    Je croyais restaurer un commit de mon fil principal, sur ma machine locale, et voilà qu'on me parle d'un "remote repository". D'ailleurs, je me rappelle bien que Git a automatiquement créé un "remote", mais on dirait que mon appréhension de la question gagnerait à un peu plus de précision.

    Par ailleurs, je vois ici au sujet de la commande git restore que c'est une "commande expérimentale", ce qui m'a paru remettre en cause l'utilité même de Git : si on ne peut pas restaurer sur une base stable, à quoi bon sauvegarder ?

    J'ai trouvé dans ce forum un fil Besoin de conseils sur l'utilisation de Git, qui m'a eu l'air d'offrir de bonnes bases. Je n'étais pas trop sûr que ce soit une bonne idée de venir à la suite pour poser des questions, alors j'ai ouvert un autre fil.

    Alors j'espère que quelqu'un va pouvoir me remettre sur les rails, car après avoir lu la doc sur la ligne de commande j'ai pu ressusciter mon projet, et dès que j'ai voulu refaire une modif dessus, voilà-t-y pas qu'il est de nouveau mort, le bouton Debug, dans Visual Studio (qui porte le nom du projet en fait) est remplacé par "Attach".

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour,

    Citation Envoyé par Gluups Voir le message
    Mais voilà un dialogue qui ne me plaît pas des masses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    git pull 6053b253a801c95672f216b0a85ac1ddda14aaab --rebase
    fatal: '6053b253a801c95672f216b0a85ac1ddda14aaab' does not appear to be a git repository
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    Je croyais restaurer un commit de mon fil principal, sur ma machine locale, et voilà qu'on me parle d'un "remote repository". D'ailleurs, je me rappelle bien que Git a automatiquement créé un "remote", mais on dirait que mon appréhension de la question gagnerait à un peu plus de précision.
    En ce qui concerne les dépôts (locaux ou distants), Git est un système « acentralisé », c'est-à-dire qu'il ne dépend pas d'un serveur de référence en particulier, comme cela pouvait être le cas avec CVS. Un dépôt Git peut avoir zéro, un ou plusieurs dépôts « voisins » portés à sa connaissance depuis lesquels il peut récupérer du matériel ou en envoyer, mais ce n'est pas une obligation. Dans l'immense majorité des cas :

    • Soit on travaille seul sur ta machine et on initialise un nouveau dépôt Git dans un répertoire avec git init ;
    • Soit on récupère un projet existant en principe depuis une machine distante en réseau (mais cela pourrait tout aussi bien être un autre répertoire en local) et on fait git clone <url du dépôt>


    Dans le deuxième cas, Git va automatiquement créer un sous-répertoire qui portera le nom du dépôt, l'initialiser normalement comme si on avait effectué git init dedans, y déclarer un dépôt distant connu vers l'URL spécifié et qu'il nommera origin par défaut (mais ce n'est pas une obligation non plus et cela peut être éventuellement modifié par la suite). Ce faisant, il va faire l'inventaire des branches distantes, les déclarer comme telles et rapatrier leur contenu. Enfin, il va créer au moins une branche locale (comme avec init). Soit master, soit une branche portant le nom de la branche active du dépôt distant à ce moment-là et la paramétrera pour qu'elle « suive » cette branche distante.

    Rien ne t'empêche ensuite d'ajouter manuellement de nouveaux dépôts distants, ou d'en déclarer un premier si tu avais jusqu'ici initialisé ton propre dépôt avec git initLe message en question, à présent, t'indique simplement qu'il ne connaît pas de dépôt distant nommé « 6053b253a801c95672f216b0a85ac1ddda14aaab » (qui est en fait la référence d'une révision, ou d'un commit). Le dépôt doit probablement s'appeler origin mais dans tous les cas, il reste extrêmement rare d'avoir à préciser un nom de dépôt à git pull tant que l'on ne travaille pas sur un dépôt très sophistiqué.

    Ce message indique surtout, en revanche, que ce n'était probablement pas la commande git pull qu'il te fallait ici, mais il va nous falloir un peu plus d'infos pour t'orienter correctement. Il s'agissait probablement de git rebase (en tant que commande à part entière, pas en tant qu'option de pull) mais là encore, prudence avant d'agir.

    Par ailleurs, je vois ici au sujet de la commande git restore que c'est une "commande expérimentale", ce qui m'a paru remettre en cause l'utilité même de Git : si on ne peut pas restaurer sur une base stable, à quoi bon sauvegarder ?
    C'est la commande restore en particulier qui est expérimentale. Je ne sais pas si elle l'est toujours à cette heure, mais elle l'était parce qu'elle a été introduite relativement récemment et ce, parce que certaines personnes trouvait le jeu de commandes confus et ont proposé cette interface. En réalité, ça ne l'est que si le fonctionnement de Git (qui se résume à trois ou quatre concepts simples et très astucieux) l'est aussi. Utilisant Git avant l'apparition de cette commande, je ne l'utilise personnellement jamais, même si elle commence à être recommandée sur d'autres forums.

    Alors j'espère que quelqu'un va pouvoir me remettre sur les rails, car après avoir lu la doc sur la ligne de commande j'ai pu ressusciter mon projet, et dès que j'ai voulu refaire une modif dessus, voilà-t-y pas qu'il est de nouveau mort, le bouton Debug, dans Visual Studio (qui porte le nom du projet en fait) est remplacé par "Attach".
    Les boutons de Visual Studio, c'est encore autre chose. Ce sont des facilités proposées par cet IDE mais Git lui-même en est indépendant.

    Dis-en nous un peu plus pour que l'on sache si c'est un checkout, un reset ou bien un rebase qu'il te faut.

  3. #3
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 863
    Par défaut
    Ah, oui. Là où la situation risque d'être le plus critique, c'est que je crains de ne pas être très à l'aise pour savoir comment m'y prendre pour donner plus d'info. J'imagine que git status ne suffit pas.

    Ah oui si quand même quelques éléments. Le projet était ingérable sous Visual Studio depuis que je me suis piqué de faire un commit, alors comme j'avais reçu une doc pour la ligne de commande j'ai regardé avec ça, c'est là que je suis rendu compte que sauvegarder une ancienne version en sous-répertoire de la solution était une mauvaise idée. J'ai retiré ce sous-répertoire du dépôt Git.

    Ça m'a permis d'arriver à une version compilable.

    Ensuite, on dirait que j'ai lancé des add et des commit sans toujours avoir une bien bonne conscience des impacts, si certaines parties avaient un remote et d'autres pas.

    Par quel bout est-ce que je pourrais bien lancer les investigations ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par Gluups Voir le message
    Ah, oui. Là où la situation risque d'être le plus critique, c'est que je crains de ne pas être très à l'aise pour savoir comment m'y prendre pour donner plus d'info. J'imagine que git status ne suffit pas.
    Suffire, pas sûr mais ce serait déjà beaucoup…

    Ensuite, on dirait que j'ai lancé des add et des commit sans toujours avoir une bien bonne conscience des impacts, si certaines parties avaient un remote et d'autres pas.
    Normalement, cela ne doit avoir aucun impact négatif sur ton projet. Au contraire, cela te permet de revenir en arrière au besoin. Oublie les remote repositories pour le moment. Si tu initialisé ton projet en local avec git init (ou par l'intermédiaire de VSCode), il ne devrait pas y en avoir, sauf si tu stockes ton projet dans une forge logicielle telle que Github ou sur les serveurs de ta compagnie.

    Par quel bout est-ce que je pourrais bien lancer les investigations ?
    On veut bien le git status pour commencer, donc. Lance ensuite git branch -vva pour avoir la liste de toutes les branches, locales et éventuellement distantes, qui sont en vigueur dans ton dépôt et donne-nous le résultat ici si tu n'y vois rien de confidentiel.

    Je vois également que les Git Notes que tu nous cites sont un document intéressant, mais qu'il est fait souvent usage de pull --rebase, qui n'est pas nécessairement la manière normale d'utiliser la chose. Et si l'on s'en réfère à la man page :

    -r, --rebase[=false|true|merges|interactive]
    When true, rebase the current branch on top of the upstream branch after fetching. If there is a remote-tracking branch corresponding to the upstream branch and the
    upstream branch was rebased since last fetched, the rebase uses that information to avoid rebasing non-local changes.

    […]

    Note
    This is a potentially dangerous mode of operation. It rewrites history, which does not bode well when you published that history already. Do not use this option
    unless you have read git-rebase(1) carefully.
    Par ailleurs, avec quoi visualises-tu l'historique de ton dépôt ? Avec les outils intégrés de Visual Studio ou avec une autre commande ?

    Quoi qu'il en soit, c'est probablement git checkout 6053b253a80 mais il te faudra au préalable sauvegarder tes modifications si tu en as fait, et vérifier sur quelle branche tu te trouves pour pouvoir y revenir ensuite.

  5. #5
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 863
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Suffire, pas sûr mais ce serait déjà beaucoup…
    En effet on peut déjà commencer par ça ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HEAD detached from 402d44f
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            .vsconfig
            Timers en vrac/
            commit-6053b25
    
    nothing added to commit but untracked files present (use "git add" to track)
    Le commit-6053b25, c'est une sauvegarde que j'ai faite du commit, pour pouvoir rebaser dessus, et raté, ça a été refusé.

    Timers en vrac, c'est la version sauvegardée. Pour "faire joli", car finalement je ne vois pas bien quand je vais m'y intéresser.

    .vsconfig je suppose que c'est exclu automatiquement.

    Normalement, cela ne doit avoir aucun impact négatif sur ton projet. Au contraire, cela te permet de revenir en arrière au besoin. Oublie les remote repositories pour le moment. Si tu initialisé ton projet en local avec git init (ou par l'intermédiaire de VSCode), il ne devrait pas y en avoir, sauf si tu stockes ton projet dans une forge logicielle telle que Github ou sur les serveurs de ta compagnie.
    Il m'avait bien semblé. Je dois avouer que ça a été une surprise quand je n'ai pu ni faire marche arrière, ni faire marche avant, ni rester sur place. Et impossible d'exécuter le projet.

    On veut bien le git status pour commencer, donc. Lance ensuite git branch -vva pour avoir la liste de toutes les branches, locales et éventuellement distantes, qui sont en vigueur dans ton dépôt et donne-nous le résultat ici si tu n'y vois rien de confidentiel.
    Bon, ça c'est assez vite fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    git branch
    * (HEAD detached from 402d44f)
      master
    
    git branch -vva
    * (HEAD detached from 402d44f) 05d5c2d Revert "Revert "Revert "aucun changement non indexé"""
      master                       a691acc [origin/master: ahead 2, behind 6] test
      remotes/origin/master        6d529c5 Mais qu'est-ce qu'il y a encore ?
    Tiens, tout-à-coup voilà qu'au début de ma réponse Firefox ne voulait plus d'espace, il a fallu que je tape Alt 032. Une fois que j'ai fait ça la barre d'espacement fonctionne de nouveau, et d'ailleurs l'espace que j'avais tapé en vain est apparu un mot plus tard.

    Je vois également que les Git Notes que tu nous cites sont un document intéressant, mais qu'il est fait souvent usage de pull --rebase
    d'ailleurs, c'est bien ce que j'ai cité au début de ma question.

    , qui n'est pas nécessairement la manière normale d'utiliser la chose. Et si l'on s'en réfère à la man page :
    Bon il va falloir que je relise ça après avoir répondu, puisque ce n'est pas cité.

    Par ailleurs, avec quoi visualises-tu l'historique de ton dépôt ? Avec les outils intégrés de Visual Studio ou avec une autre commande ?
    J'ai longtemps essayé avec Visual Studio, surtout qu'il m'a semblé qu'ils ont pas mal travaillé là-dessus.
    Et quand je me suis dit qu'il allait falloir que je m'y plonge, comme j'avais une doc je m'en suis servi. Donc, ligne de commandes.

    Tiens, d'ailleurs ça c'est amusant : dans la ligne de commandes de Windows j'ai bien Git, mais pas dans la ligne de commandes de Visual Studio.

    Quoi qu'il en soit, c'est probablement git checkout 6053b253a80 mais il te faudra au préalable sauvegarder tes modifications si tu en as fait, et vérifier sur quelle branche tu te trouves pour pouvoir y revenir ensuite.
    OK.
    Je dois avoir une sauvegarde du disque, mais ça me paraît plus prudent d'en refaire une du répertoire. Et sur un autre disque, du coup.
    D'ailleurs, ce numéro ce sont les caractères qui tiennent dans la ligne sur log --oneline, mais git ne connaît rien à cette adresse, il lui faut le numéro entier, qu'on trouve dans git log, sans --oneline.

    Et encore, ça ne lui va pas à tous les coups.

    Bon alors puisque je mentionnais des curiosités d'installation ...

    La ligne de commandes de git ne répondait plus alors je l'ai réinstallée. Ce faisant j'ai consacré deux à trois heures à choisir un éditeur, j'ai choisi VSCodium, que j'ai installé spécialement pour ça, et après ça quand je fais un commit, si j'oublie le paramètre -m, on m'affiche le fichier de message avec vim. Et là je suis d'accord avec la présentation qui en est faite, en résumé "à fuir". Et le fait est que j'ai mis un sacré bout de temps à savoir sortir de ce truc.

  6. #6
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 863
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Note
    This is a potentially dangerous mode of operation. It rewrites history, which does not bode well when you published that history already. Do not use this option
    unless you have read git-rebase(1) carefully.
    Ah, çà, je dois bien dire que je n'ai pas read git-rebase carefully.
    Si tant est que j'y aie jeté un coup d'œil ...

    Et le fait que je sois bloqué tendrait à valider le caractère dangereux de la manœuvre.

  7. #7
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 863
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Quoi qu'il en soit, c'est probablement git checkout 6053b253a80
    Joli !
    Après il a encore fallu dire à Visual Studio de recharger tous les projets (pour être sûr mais il n'y en a qu'un), et ensuite ça s'exécute.

    Est-ce que c'est différent si dans l'historique sous Visual Studio je fais un clic droit sur ce commit et que je clique sur Rétablir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    git checkout 6053b253a801c95672f216b0a85ac1ddda14aaab
    Warning: you are leaving 1 commit behind, not connected to
    any of your branches:
    
      05d5c2d Revert "Revert "Revert "aucun changement non indexé"""
    
    If you want to keep it by creating a new branch, this may be a good time
    to do so with:
    
     git branch <new-branch-name> 05d5c2d
    
    HEAD is now at 6053b25 Mise à jour globale
    Bon, alors j'avais obtenu ça, après j'ai voulu mettre trois instructions en commentaire et refaire un commit, et c'est là que ça a coincé.

  8. #8
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 863
    Par défaut
    Alors j'ai fait quelques modifs, y compris l'intégration du projet à la solution.

    J'avais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    git branch -v
    * Inclusionduprojet 04b26e1 Voilà
      master            a691acc [ahead 2, behind 6] test
    Et après, j'ai voulu mettre ça dans le master. Ça coince un peu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    git merge Inclusionduprojet --into master
    Already up to date.
    Ensuite il faut que je potasse le topo sur l'utilisation de Git dans Visual Studio, parce que là où je crois dire qu'il faut garder Form1 de Inclusionduprojet, Git comprend qu'il faut supprimer purement et simplement Form1 sans se poser aucune question. .

    Euh ... Ce n'est pas tout-à-fait ce que j'ai voulu dire.

Discussions similaires

  1. Ajouter des points de repères sur une image
    Par Asdorve dans le forum AJAX
    Réponses: 11
    Dernier message: 23/01/2020, 10h01
  2. Gérer l'affichage de points de repère sur une image
    Par Aureliendeb dans le forum Android
    Réponses: 2
    Dernier message: 25/07/2014, 11h51
  3. Réponses: 0
    Dernier message: 03/08/2013, 16h51
  4. Réponses: 31
    Dernier message: 20/04/2011, 12h21
  5. Réponses: 4
    Dernier message: 11/06/2004, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo