ninetydegrees (90d)☕ (
ninetydegrees) wrote in
dw_dev_training2012-08-30 01:24 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[site community profile]](https://www.dreamwidth.org/img/comm_staff.png)
Git: more newbie questions: the sequel
Once your request has been pulled into develop and you've updated develop what do you do with your 'old' branch (local and remote)?
Edit: http://git-scm.com/book/en/Git-Branching-Remote-Branches says this:
Suppose you’re done with a remote branch — say, you and your collaborators are finished with a feature and have merged it into your remote’s master branch (or whatever branch your stable codeline is in). You can delete a remote branch using the rather obtuse syntax
Is that what needs to be done here? If so what about the local branch and should we wait until code is pushed live?
Answer 1: local can be deleted w/ git branch -d BRANCHNAME (not merge needed yay)
Answer 2: remote can be deleted using git push origin :BRANCHNAME
Edit: http://git-scm.com/book/en/Git-Branching-Remote-Branches says this:
Suppose you’re done with a remote branch — say, you and your collaborators are finished with a feature and have merged it into your remote’s master branch (or whatever branch your stable codeline is in). You can delete a remote branch using the rather obtuse syntax
git push [remotename] :[branch]
.Is that what needs to be done here? If so what about the local branch and should we wait until code is pushed live?
Answer 1: local can be deleted w/ git branch -d BRANCHNAME (not merge needed yay)
Answer 2: remote can be deleted using git push origin :BRANCHNAME
no subject
(sorry, that's unhelpful)
no subject
no subject
no subject
no subject
no subject
no subject
I find this a useful check that I don't have code I forgot to pull request - if branch -d fails, it means I have code that's not merged. Sometimes that's because I made a mistake I don't want to keep, in which case branch -D solves it. But sometimes I've found a second half of the patch that I forgot to submit, and it's useful.
no subject
Thank you for your detailed answer and precious advice, cesy! It's very clear and helpful.
no subject
no subject
Can you point me at an example branch? It's easier to explain with diagrams and commits to refer to.
I'm not quite sure how to explain about pull requests, because I got so familiar with them that it's hard to break it back down. Which ways are you looking at? It doesn't matter so much which button you press as what you're requesting from and to - there are several ways to achieve the same thing.
no subject
As for the pull request button... There's one at the top near Watch/Unwatch which is there when you select a branch in the drop-down menu and when you view a commit, and one below the branch menu (not always there maybe because I can't see it right now).
no subject
https://github.com/ninetyd/dw-free/compare/develop...bug4606/moderated_entry shows that there's nothing in 4606 that's not in develop at the moment. Can you try making sure you've pushed the latest version of both to your fork?
One other thing I sometimes end up having to do is rebasing, if everything's got too mixed up, e.g. if you built on other pull requests that then got merged in a different order from how you built on them. So if you rebase 4606 onto develop, then try to -d, sometimes that solves it. And if it doesn't, it'll show up much more clearly what's missing.
no subject
Note quite sure how to do this. If I do git status it tells me there is nothing to commit.
I don't think I've done that because it's clearly isolated on my graph but who knows?
Can you explain how to do this and what this does? I've read about rebasing but it mentioned it wasn't a good idea to do rebasing when working with a public repo or something like that.
no subject
The thing with rebasing is that it rewrites history by changing around the order of things. This is a bad idea if someone else has built code off yours, or is otherwise relying on yours, so the central repo must never do it. But opinions vary on when it's useful for an individual developer, and I really like it for keeping things clean so you can see exactly what changed. Some repos will also insist on it to make sure your pull requests merge cleanly and don't clash with anything that's been done in the meantime.
If develop is up to date, you go on your bug branch, and do git rebase develop, and that will essentially move your stuff so that it looks as if you branched off develop's current status and then did your coding, instead of you having branched off a month ago and then taking several days to do your coding and develop moving on in the meantime. If there's anything conflicting with what's been done on develop in the meantime, it will tell you and highlight it and walk you through fixing it.
If it's a branch you've already pushed to github, you then have to force it up there, because github will complain that you're rewriting history, so you have to do git push origin bugnumber -f. But if you've got a pull request open, that will automatically update and clean up the pull request as well.
no subject
So it's like it pushes your branch forward in time?
no subject
no subject
I had to rebase today because I messed up* and I totally see how it can useful and what you meant now. Thanks again!
* It was a case of 'if you built on other pull requests that then got merged'. :)
no subject
The easiest way to learn them is to look closely at what you're requesting from and to, then change it, and view the commits without actually submitting the pull request. That lets you play with it enough until it starts to make sense, without bothering anyone else.
The URL is also quite a helpful hint. So something like https://github.com/ninetyd/dw-free/pull/new/dreamwidth:develop...ninetyd:bug4591/database_themes will have the same stuff as https://github.com/ninetyd/dw-free/compare/develop...bug4591/database_themes, provided your develop branch is up-to-date.
If you want to get confused you can do weird things like pull requesting to yourself or to another developer, which is useful for pair programming or working in teams. But it was only once I'd done that a few times that it actually made sense to me, because that's the way I learn.
no subject
*nods* yeah I pay more attention to the drop-downs now.
I'll experiment when I have more time. Thanks for the suggestion. It does sound like it could help.