5 ms·
heavy mercurial user. all my open source projects are on it. first at Google code (rip) and now on bitbucket. though i have to use git at work daily. github to
by gcb0 12y ago
heavy mercurial user. all my open source projects are on it. first at Google code (rip) and now on bitbucket.
though i have to use git at work daily. github to add insult...
my finger memory is now on git. and that's where git "wins". the chance that you will be forced to use it and learn the awful laundry list of steps to properly use it (hint, if you ever type "pull" you are doing it wrong) you get your finger memory and then curse when you have to use the simple and more intuitive solutions. damn dumb fingers.
- lifebeyondfife 12y ago> hint, if you ever type "pull" you are doing it wrong Genuine question: what's wrong with executing 'git pull' on a branch you haven't changed locally?
- leni536 12y agoIt could be rebased upstream. While it's a really bad practice, it could happen.
- lifebeyondfife 12y agoAh ok, I think I understand the concern. So 'git fetch' and 'git merge' explicitly will stop an upstream rebase from making destructive changes to the history of your local branch(?) As you say it's bad practice and shouldn't happen. I use gitlab and GitHub where branches can be protected to only allow merges via their web interfaces.
- leni536 12y agoI don't think git pull would ever destroy your history (AFAIK it's exactly the same as a fetch+merge), at worst you end up in a merge conflict, but it's easily revertable. However after a git fetch and a git log you can see beforehand if there is anything nasty going on.
- sytse 12y agoGitLab CEO here, in GitLab you can protect branches to not be rebased at all (web or command line), see https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ https://about.gitlab.com/2014/11/26/keeping-your-code-protec... I'm not aware that GitHub offers the same functionality.
- c0wb0yc0d3r 12y agoOn the page where the ssh finger print is listed, can you list the RSA finger print too? I am not well versed in working with git over ssh, but after following the instructions on GitLab to generate a key, then git would keep showing me the RSA finger print which doesn't match the one provided on the website. After looking around a bit, it looks like the one listed is ECDSA. tl;dr: It was late. Finger prints didn't match. Only logical assumption was NSA. :P (Not really, obviously, but the finger prints could be more clear.)
- sytse 12y agoThanks, fixed in https://gitlab.com/gitlab-com/www-gitlab-com/commit/2493f208743b079806e29e2ef7887dd87c3c9d81 https://gitlab.com/gitlab-com/www-gitlab-com/commit/2493f208...
- sytse 12y agoAlso, we added all other keys: https://gitlab.com/gitlab-com/www-gitlab-com/commit/79bdb63ff3184be6bf23788d3f2d7a55349f53d9 https://gitlab.com/gitlab-com/www-gitlab-com/commit/79bdb63f...
- gcb0 12y agobut you still damage your local copy and it's a pain to clean up, specially if you had local changes/commits
- sytse 12y agoThe idea is not to have upstream rebases so you can't pull them by accident.
- ehotinger 12y agoNothing unless you're rebasing upstream, but I think the point he was trying to make was that you should always run `git fetch` and then `merge` from there (again, there are some situations where the pull is fine IMHO).
- lifebeyondfife 12y agoBeat me to it.
- c0wb0yc0d3r 12y agogit pull just runs git fetch then git merge. At least that is what the docs say: http://git-scm.com/docs/git-pull http://git-scm.com/docs/git-pull What am I missing?
- gcb0 12y agobut it tries to be smart about how to merge. and usually it's not what you want. i consider it the clippy of linus. if you run merge/rebase/etc on its own, it will tell and ask you about anything out of the ordinary and then there's no surprise. again, it's all about avoiding errors on the rare cases because you developed dangerous finger memory.
- Kiro 12y agoWhy?
- gcb0 12y agonothing. but tomorrow, when you are used to type git pull, you will run it on a branch with changes and you have no idea if it will rebase, merge, fast forward... and /then/ you will see the problem. (and open yet another stackoverflow question on how to undo the last merge :)