threads / discuss / 24490

Git workflow with upstream repository

Subject: Git workflow with upstream repository

## tl;dr

4 messages between Jul 24, 2010 and Jul 24, 2010.

replies: 3people: 2as markdown or json

Bradley Wagner· Jul 24, 2010, 00:58 UTC · lore

Hi, I'm trying to figure out the best way to work with two remote repositories: one origin and an upstream repository.

Basically, with one remote origin I do 'git fetch' and then a 'git status' which tells me my status as compared to my remote at which point I decide wether I want to rebase or pull/merge.

If I'm working with another remote repository 'upstream' that I perhaps don't have permissions to and then my branches are not tracking against, how would I do something similar to be able to first see how my branch compares to the remote and then either rebase or pull/merge.

Am I missing something in git status that allows me to see my status as compared to another remote?

Avery Pennarun· Jul 24, 2010, 01:24 UTC · re: Bradley Wagner · lore

Re: Git workflow with upstream repository

On Fri, Jul 23, 2010 at 8:58 PM, Bradley Wagner <bradley.wagner@hannonhill.com> wrote:

Show 5 quoted lines
> If I'm working with another remote repository 'upstream' that I
> perhaps don't have permissions to and then my branches are not
> tracking against, how would I do something similar to be able to first
> see how my branch compares to the remote and then either rebase or
> pull/merge.

# show the commits in my local branch that aren't in upstream git log upstream/master..

# show the commits in upstream that aren't in my local branch git log ..upstream/master

# a cuter way to show the commits in upstream that aren't in my local branch git shortlog ..upstream/master

# summarize the differences in upstream since we diverged (not including my own changes) git diff --stat upstream/master..

# summarize the differences between my branch and upstream (including my changes and theirs) # (note: three dots) git diff --stat ...upstream/master

Have fun,
Avery
Bradley Wagner· Jul 24, 2010, 01:43 UTC · re: Avery Pennarun · lore

Re: Git workflow with upstream repository

Thanks, I'll check those out! So, I take it there is not a way to get a simple message like what git status tells you when you're local branch is behind the remote branch:

"Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded."

Is there even a concept of a fast-forward merge when pulling from a remote repo that is not the remote to which your branches are tracking?

Is it possible to rebase based on a branch that is *not* the branch you're currently tracking? Is that what the --onto flag is for?

- Bradley
On Jul 23, 2010, at 9:24 PM, Avery Pennarun <apenwarr@gmail.com> wrot
Show 29 quoted lines
> On Fri, Jul 23, 2010 at 8:58 PM, Bradley Wagner
> <bradley.wagner@hannonhill.com> wrote:
>> If I'm working with another remote repository 'upstream' that I
>> perhaps don't have permissions to and then my branches are not
>> tracking against, how would I do something similar to be able to first
>> see how my branch compares to the remote and then either rebase or
>> pull/merge.
>
> # show the commits in my local branch that aren't in upstream
> git log upstream/master..
>
> # show the commits in upstream that aren't in my local branch
> git log ..upstream/master
>
> # a cuter way to show the commits in upstream that aren't in my local branch
> git shortlog ..upstream/master
>
> # summarize the differences in upstream since we diverged (not
> including my own changes)
> git diff --stat upstream/master..
>
> # summarize the differences between my branch and upstream (including
> my changes and theirs)
> # (note: three dots)
> git diff --stat ...upstream/master
>
> Have fun,
>
> Avery
Avery Pennarun· Jul 24, 2010, 02:39 UTC · re: Bradley Wagner · lore

Re: Git workflow with upstream repository

On Fri, Jul 23, 2010 at 9:43 PM, Bradley Wagner <bradley.wagner@hannonhill.com> wrote:

Show 5 quoted lines
> Thanks, I'll check those out! So, I take it there is not a way to get
> a simple message like what git status tells you when you're local
> branch is behind the remote branch:
>
> "Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded."

As far as I know, any given branch can only "track" one particular branch, and that message is only generated relative to the branch you're tracking. You can adjust which one you're tracking by editing .git/config.

> Is there even a concept of a fast-forward merge when pulling from a
> remote repo that is not the remote to which your branches are
> tracking?

Yes. Tracking branches are really just a notational convenience. In fact, they don't do very much more than generating the above message. (The other thing they do is make 'git pull' do something by default when you don't give it any other parameters.)

You might enjoy this article: http://eagain.net/articles/git-for-computer-scientists/

> Is it possible to rebase based on a branch that is *not* the branch
> you're currently tracking? Is that what the --onto flag is for?

Yes, it's possible. The question of when you do or don't need the --onto option is a little more complex than that, but yes, that's what's it's for, more or less.

Have fun,
Avery

← back to recent threads