397 liens privés
"""
Simple tool to help track vendor branches in a Git repository.
"""
plus flexible que les submodules mais surtout moins casse-gueule
Sinon y'a aussi subtree présenté ici: https://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
Ah la vile cochonnerie ! Non, vraiment faites pas ça.
Pour mettre un travail en attente il y a git stash, qui n'a pour seul comportement inattendu que demander à résoudre les conflits si conflit il y a.
Ensuite au niveau de la mise en place de cette "solution" ça laisse à désirer.
c'est ton avis et tu fais bien ce que tu veux. git-stash ne m'a pas convaincu. chacun voit midi à sa porte. :)
Faire git add . est redondant avec l'argument -a de git commit qui a le même effet. (Sauf que ça commite pas les fichiers non suivis, mais du coup ça évite en plus de rajouter dans le dépôt des fichiers qui n'ont rien à y faire et qu'on a manqué dans le .gitignore)
redondant? pas vraiment. 'git add .' ajoute uniquement les fichiers créés/modifiés et pas ceux supprimés. 'git commit -am' ajoute les fichiers qui ont été modifiés et supprimés, mais les nouveaux fichiers qui n'ont jamais été trackés ne sont pas affectés. dans les 2 cas le .gitignore est respecté.
Faire un alias qui efface le dernier commit, c'est un coup à perdre des données. gunwip sur la mauvaise branche et oups merde, comment je le retrouve ce commit que j'aurai pas du effacer ? (Avec git reflog si on s'en rends compte de suite, avec de la chance si on a fait d'autres trucs depuis.)
Et si on efface un commit public il faut le retrouver (heureusement ce sera plus simple qu'avec un commit local) on ne peut pas juste « le refaire à la main » puisque son SHA sera différent changé, il faudra faire un push -f et les contributeurs vont être perturbés. Une fois encore, si on se rend pas de suite compte de la boulette, il faut du courage.
oui je l'utilise en connaissance de cause. peut-être devrais-je préciser que chaque chose que je mets sur mon shaarli n'est pas à prendre pour argent comptant (surtout pour git, je ne suis qu'un sysadmin). enfin surtout je compte sur toi pour venir me dire que ce que j'utilise ne te correspond pas. ^^
Faire des alias bash est peu pertinent pour les commandes git simples vu que git permet de faire des alias git (et éloigne le risque d'une mauvaise frappe du coup)
git config --global alias.wip "commit -am '--wip--'"
git config --global alias.unwip "reset HEAD^"
c'est une meilleure pratique de faire des alias git oui, ça je te l'accorde.
Il faut maintenant taper git wip et git unwip, comme ça on sait que ce sont des commandes git et pas autre chose.
Mais vraiment, c'est très mal ce genre de trucs et un workflow plus robuste est de faire beaucoup de petits commits puis éventuellement y remettre de l'ordre ensuite avec un rebase interactif.
c'est pourtant ce que je fais quand je reviens sur ma branche pour bosser dessus. ce n'est pas parce que je fais un gros commit sale (mais temporaire) pour passer à autre branche que je procède comme ça pour les autres commits que je release.
via moi-même, développeur responsable git au boulot, qui passe une part non négligeable de mon temps à rattraper les boulettes des collègues et stagiaires aventureux qui font ce genre de choses.
tu n'en manques pas une pour te mettre sur un piedestal. ce qui me rappele ce shaarlink: https://jeekajoo.eu/links/?K6_NuQ
dis, un jour on fera la paix?
2 alias bash/zsh:
gwip='git add . && git commit -am '\''--wip--'\'
gunwip='git reset '\''HEAD^'\'
gwip
met tout le travail en cours dans un commit.- on peut passer sur une autre branche et bosser sur autre chose..
- de retour sur la branche sur laquelle on bossait, on peut faire un
gunwip
pour annuler le dernier commit créé avecgwip
. On retrouve la branche telle qu'on l'avait trouvée avant de faire legwip
:)
Je trouve cela plus simple que git-stash qui peut d'ailleurs avoir un résultat inattendu.
via mon collègue
du versionning de gros fichiers par github
annoncé officiellement ici: https://github.com/blog/1986-announcing-git-large-file-storage-lfs
code du client: https://github.com/github/git-lfs
pour la partie serveur, seule la doc de l'API semble être disponible: https://github.com/github/git-lfs/blob/master/docs/api.md
unstage: si fichier déja ajouté à l'index (git add)
git reset HEAD <file>
rétablir un fichier non commité
git checkout <file>
rétablir un fichier commité
git checkout -- <file>
"""
gws is a KISS, bash, colorful helper to manage workspaces composed of git repositories.
"""
via http://linuxfr.org/users/streakycobra/journaux/gerer-son-espace-de-travail-git-avec-gws
"""
Pour moi repo est un peu un sorte de bazooka qui permet d'effectuer des tâches grossières sur de très gros projets. Je le trouve particulièrement adapté :
- à la syncho de code source de gros projet sur son PC de dev super facilement
- à la génération de firmwares
- à la compilation sur serveur d'intégration de type Jenkins. On charge un projet on se place sur la bonne branche et on lance le build.
- à la manipulation automatisée sur repositories (ajout de branches, de tags, etc.)
"""
un peu de ménage dans les branches locales déja mergées dans master...
git checkout master
git branch --merged master | grep -v master | xargs git branch -d
clone de github autohébergeable
codé en GO
moins lourd qu'un gitlab écrit en RoR
via http://linuxfr.org/users/shingo/journaux/gitlab-mais-encore
une lib python pour intéragir avec github via les api
pour l'instant il n'y a que github: http://seveas.github.io/git-spindle/github.html
gitlab pourrait également être de la partie si on en croit la doc.
pense bête: j'ai tendance à vouloir utiliser 'git reset' par réflexe pour restaurer un seul fichier, mais ça ne marche PAS.
Il faut utiliser:
git checkout filename # fichier non commité
ou
git checkout -- filename # fichier commité
suivant que le fichier a été commité ou non
git diff -- myfile.txt
ou si le fichier a déja été ajouté à l'index (git add)
git diff --cached -- myfile.txt
resetter un fichier ajouté :
git reset file
git checkout -- file
Admettons que:
- vous ne souhaitez pas gérer votre propre serveur DNS
- vous avez des domaines un peu partout (gandi, online, ovh..) et vous souhaitez gérer leurs zones de manière centralisée sans avoir aller dans leurs interfaces web respectives
- vous voulez gérer vos fichiers de zones (syntaxe bind) avec votre éditeur préféré
- vous voulez que ces fichiers de zone soient gérés dans un repo git.
LuaDNS peut vous interesser:
- Ca marche avec des web hooks sur votre repo git
- Possibilité de gérer 3 domaines gratuitement
- Ils ont 5 serveurs dans le monde
ns1.luadns.net (DE)
ns2.luadns.net (NL)
ns3.luadns.net (CA, USA)
ns4.luadns.net (NJ, USA)
ns5.luadns.net (JP) - Exemple de repo: https://github.com/luadns/dns-examples
Un outil de plus pour apprendre git. C'est intéractif et c'est très bien fait.
une bonne petite référence pour les commandes git, c'est clair.
Merci Cyp.
Problème:
$ git pull
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 2 (delta 0)
Unpacking objects: 100% (6/6), done.
From https://github.com/sebsauvage/Shaarli
246e9b4..7b2186a master -> origin/master
Updating 246e9b4..7b2186a
error: Your local changes to the following files would be overwritten by merge:
index.php
Please, commit your changes or stash them before you can merge.
Aborting
Solution:
$ git reset --hard FETCH_HEAD
un projet très prometteur qu'il faut que je regarde plus en détails
via @SamEtMax
en français : http://blog.ninja-squad.com/2013/06/03/branching-with-git/
level advanced1