En résumé : on peut faire un cherry-pick d'un commit d'une branche dans une autre, puis faire un merge de ces 2 branches et cela devrait fonctionner sans duplication. Sinon, il faudra régler le conflit à l'ancienne.
Pour éviter aussi la duplication dans l'historique, on peut utiliser "rebase".
git reflog
git reset HEAD@{index before the amend}
git commit ...
Something wrong
git reflog
# you will see a list of every thing you've done in git, across all branches!
# each one has an index HEAD@{index}
# find the one before you broke everything
git reset HEAD@{index}
# magic time machine
I accidentally committed to the wrong branch!
# undo the last commit, but leave the changes available
git reset HEAD~ --soft
git stash
# move to the correct branch
git checkout name-of-the-correct-branch
git stash pop
git add . # or add individual files
git commit -m "your message here"
# now your changes are on the correct branch
Oui, quelqu'un paie un nom de domaine chaque année pour ça. Merci quand même :-)
Excellent petit outil pour browser des repo Git via le Web.
Pour partager un repository Git entre Windows et Linux, j'utilise ces configurations dans mon ~/.gitconfig.
Pour Windows (on ne touche pas aux permissions des fichiers, on transforme les éventuels \r\n en \n à chaque commit mais sans les modifier dans notre workspace)
git config --global core.filemode false
git config --global core.autocrlf true
Pour Linux (on commit aussi les permissions des fichiers, et on transforme les éventuels \r\n en \n dans notre workspace)
git config --global core.filemode true
git config --global core.autocrlf input
Et je vérifie que ces paramètres ne sont pas présents dans les .git/config de chacun de mes projets.
A utiliser avec parcimonie, mais c'est bien pratique.
Y a plus qu'à !
Très bonne ressource : Linux, Symfony2, SVN, Git, ...
via nicosombs
Comment supprimer un tag dans Git :
git tag -d myTag
Comment supprimer un tag remote dans Git (i.e. qui a été pushé sur un repository remote. Dans la plupart des cas il n'y en a qu'un seul nommé "origin") :
git push origin :refs/tags/myTag
Pour mémoire, pour pusher un tag sur le remote :
git push origin myTag
Ouf !