Outils pour utilisateurs

Outils du site


informatique: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
informatique:git [25/01/2015 16:21] – [Merge only a specific commit] typo cyrilleinformatique:git [25/08/2023 13:01] (Version actuelle) – [Rétablir un fichier depuis un commit] cyrille
Ligne 3: Ligne 3:
 Gestionnaire de code sources. Gestionnaire de code sources.
  
-Voir aussi: [[/informatique/gitlab]]+Voir aussi: [[/informatique/gitlab]], [[http://gogs.io/|Gogs]]
  
 [[http://git-scm.com]] [[http://git-scm.com]]
Ligne 19: Ligne 19:
   * [[http://openclassrooms.com/courses/gerer-son-code-avec-git-et-githubl|Gérez vos codes sources avec Git]] sur OpenClassRooms.   * [[http://openclassrooms.com/courses/gerer-son-code-avec-git-et-githubl|Gérez vos codes sources avec Git]] sur OpenClassRooms.
  
-==== Tips ====+===== Credentials ===== 
 + 
 + 
 +=== Spécifier la clé ssh === 
 + 
 +Sur la ligne de commande: 
 + 
 +<code bash> 
 +GIT_SSH_COMMAND='ssh -i .ssh/the_private_key' git clone git@gitlab.com:Namespace/Project/theproject.git 
 +</code> 
 + 
 +Dans la configuration git du projet: 
 + 
 +<code ini> 
 +# vi .git/config 
 +[core] 
 +  sshCommand="/usr/bin/ssh -i /home/user/.ssh/the_private_key" 
 +</code> 
 + 
 +Dans la configuration du client ssh: 
 + 
 +<code bash> 
 +# cat ~/.ssh/config 
 +Host gitlab.com 
 +    Hostname gitlab.com 
 +    IdentityFile /home/user/.ssh/the_private_key 
 +    IdentitiesOnly yes 
 +</code> 
 + 
 +=== avec HTTPs === 
 + 
 +On peut configurer git pour conserver en cache (en mémoire) un certain temps le mot de passe pour HTTPs. 
 + 
 +<code bash> 
 +[core] 
 +        user = username 
 +[credential] 
 +        helper = cache --timeout=3600 
 +</code> 
 + 
 +===== Tips =====
  
   * [[http://stackoverflow.com/questions/1123344/merging-between-forks-in-github|Merging between forks in GitHub]]   * [[http://stackoverflow.com/questions/1123344/merging-between-forks-in-github|Merging between forks in GitHub]]
Ligne 26: Ligne 66:
   * Annulé un/des Commit(s) : Revert or Reset ?   * Annulé un/des Commit(s) : Revert or Reset ?
     * [[http://stackoverflow.com/questions/2389361/git-undo-a-merge|git: undo a merge?]] => Si les modifs n'ont pas été "pushées" un Reset est la bonne solution pour ne pas ajouter toutes les manips dans les logs. Par contre, après un Push un Revert est nécessaire.     * [[http://stackoverflow.com/questions/2389361/git-undo-a-merge|git: undo a merge?]] => Si les modifs n'ont pas été "pushées" un Reset est la bonne solution pour ne pas ajouter toutes les manips dans les logs. Par contre, après un Push un Revert est nécessaire.
 +  * [[http://stackoverflow.com/questions/179123/edit-an-incorrect-commit-message-in-git|Edit an incorrect commit message]], Amending the commit message
   * sub-modules   * sub-modules
     * [[http://git-scm.com/book/en/Git-Tools-Submodules|6.6 Git Tools - Submodules]]     * [[http://git-scm.com/book/en/Git-Tools-Submodules|6.6 Git Tools - Submodules]]
 +    * [[https://delicious-insights.com/fr/articles/git-submodules/|Comprendre et maîtriser les submodules Git]]
 +
 +
 +=== Revenir à une version précédente, pour toujours ===
 +
 +Rewind local & remote
 +
 +<WRAP center round important 50%>
 +Attention, pas de retour arrière possible, c'est pour toujours
 +</WRAP>
 +
 +<code bash>
 +git reset --hard 4a3ba7
 +git push -f
 +</code>
 +
 +**Gitlab** interdit par défaut le push forcé ''remote: GitLab: You are not allowed to force push code to a protected branch on this project''. Il faut l'autoriser dans les options de la branche: "Settings / Repositories / Protected branches /  Allowed to force push".
 +{{ :informatique:git:gitlab_forced-push_allow.png?nolink&620 |}}
  
 === Créer un dépôt depuis un projet existant === === Créer un dépôt depuis un projet existant ===
Ligne 44: Ligne 103:
 === Cancel an add === === Cancel an add ===
  
-Annuler le "git add" d'un fichier+Annuler le "git add" de fichier(s) 
 +<code bash>
 $ git reset <le_fichier> $ git reset <le_fichier>
 +</code>
 === Amend last commit === === Amend last commit ===
  
Ligne 55: Ligne 115:
   $ git add le_fichier   $ git add le_fichier
   $ git commit --amend   $ git commit --amend
 +
 +=== Changer des commits de branche ===
 +
 +//move commits to another branch//
 +
 +**La version simple**: Je viens de pousser un ou plusieurs commits mais j'aurai dû le faire dans une branche
 +<code bash>
 +# Créer nouvelle branche depuis main, elle contiendra les commits en question
 +git branch oups-branch
 +# reset d'un ou plusieurs (n) commits selon HEAD~n
 +git reset --hard HEAD~1
 +# ou remplacer HEAD~n par le hash du commit voulu
 +git checkout oups-branch
 +# forcer le push vers le remote
 +git push -f
 +# possible erreur si branch protégée:
 +# remote: GitLab: You are not allowed to force push code to a protected branch on this project.
 +</code>
  
 === Force pull === === Force pull ===
Ligne 86: Ligne 164:
   $ git diff --cached # pour vérifier la modif   $ git diff --cached # pour vérifier la modif
   $ git commit -a -m “merge [SHA du commit]"   $ git commit -a -m “merge [SHA du commit]"
 +
 +=== Rétablir un fichier depuis un commit ===
 +
 +''git checkout <commit> -- <file>''
 +
 +<code bash>
 +$ git log --oneline resources/views/auth/register.blade.php
 +f5d16d4 (HEAD -> main, origin/main) WIP refactorize User data #13
 +1f27c64 User registration
 +5cfb6d7 initial code (bis)
 +
 +$ git checkout 1f27c64 -- resources/views/auth/register.blade.php
 +
 +$ git status
 +
 +Sur la branche main
 +Votre branche est à jour avec 'origin/main'.
 +
 +Modifications qui seront validées :
 +  (utilisez "git restore --staged <fichier>..." pour désindexer)
 + modifié :         resources/views/auth/register.blade.php
 +</code>
  
 === Create a Tag === === Create a Tag ===
Ligne 94: Ligne 194:
 Et ne pas oublier de publier ce nouveau tag (par défaut créé localement): Et ne pas oublier de publier ce nouveau tag (par défaut créé localement):
   $ git push origin v1.0   $ git push origin v1.0
 +
 +=== Delete a Tag ===
 +
 +Pour supprimer une tag localement:
 +  $ git tag -d release01
 +puis sur le remote:
 +  $ git push origin --delete release01
 +ou
 +  $ git push origin :refs/tags/release01
 +
  
 === Create a Branch === === Create a Branch ===
Ligne 101: Ligne 211:
   Créer la branche sur le remote   Créer la branche sur le remote
   $ git push origin origin:refs/heads/nom_nouvelle_branche   $ git push origin origin:refs/heads/nom_nouvelle_branche
-  Se connecter locamenet à la branch +  Se connecter localement à la branch
-  $ git branch --track nom_nouvelle_branche origin/nom_nouvelle_branche+
   $ git checkout nom_nouvelle_branche   $ git checkout nom_nouvelle_branche
   $ git pull   $ git pull
Ligne 116: Ligne 225:
 Tous les commits de la branche « autre_branche » se retrouvent maintenant dans « destination ». Tous les commits de la branche « autre_branche » se retrouvent maintenant dans « destination ».
  
-On peut supprimer la branche « autre_branche » :+=== Delete a Branch === 
 + 
 +On peut supprimer une branche « autre_branche » (si mergée dans master ou une autre branche). 
 + 
 +Delete local:
   git branch -d autre_branche   git branch -d autre_branche
 +Delete remote:
 +  git push origin --delete <branchName>
 +
 +=== Log & graph ===
 +
 +{{ :informatique:git:git-log-graph.png?nolink&400}}
 +
 +''git log --graph''
 +
  
 ===== Tools ===== ===== Tools =====
informatique/git.1422199276.txt.gz · Dernière modification : 25/01/2015 16:21 de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki