On Thu, May 11, 2017 at 3:17 PM, Jeff King <peff@xxxxxxxx> wrote: > I think you want: > > [push] > default = current > [remote] > pushDefault = myfork > > to make "git push" do what you want. And then generally have branches > mark their counterparts on "origin" (which you can do either at creation > time, or probably by using "git push -u origin my-topic" when you push > them). So without the `pushDefault` setting, `current` will default to a remote named `origin` if there is no tracking branch set, correct? So `pushDefault` is effectively overriding this built-in default? In addition, it seems like since this overrides `branch.name.remote`, that this effectively makes the remote tracking branch *only* for `pull`. Is this a correct understanding? > This is similar to what I do for my git.git workflow, though I usually > have origin/master as the branch's upstream. I.e., I'd create them with: > > git checkout -b my-topic origin I'm looking through the `git checkout` and `git branch` documentation, but I don't see any mention of it being valid to use a remote name as the <start-point> parameter (you're using `origin` in the above example). Am I misunderstanding? Did you mean origin/my-topic? > And then rebasing always happens on top of master (because "origin" > doesn't even have my topic branch at all). If I want to compare with > what I've pushed to my fork, I'd use "@{push}". Can you explain more about how your rebase chooses master instead of your same-named remote tracking branch? Maybe provide some examples of your rebase command and respective configuration (unless what you've already provided is sufficient). As for @{push}, I haven't used this before, so I'll dig in the docs and learn about it. Thanks for your advice, so far I like this direction but seems like there is more for me to learn!