Default behavior of git pull

4 messages, 3 authors, 2021-07-14 · open the first message on its own page

Default behavior of git pull

From: Mathias Kunter <hidden>
Date: 2021-05-31 09:18:42

Wouldn't it make sense if "git pull" would by default also pull the 
branch with the same name from the remote, in case no upstream is 
configured?

If I can push to a remote with a simple "git push", then I'd also expect 
to be able to pull from that same remote with a simple "git pull".

Does anything speak against this?

Example:

   git clone $url
   git checkout -b fix-1
   # do commits
   git push           # push to origin/fix-1 (works)
   git push origin    # push to origin/fix-1 (works)
   # other people push to origin/fix-1
   git pull           # pull from origin/fix-1 (fails)
   git pull origin    # pull from origin/fix-1 (fails)

Re: Default behavior of git pull

From: Bagas Sanjaya <hidden>
Date: 2021-05-31 11:27:09

Hi Mathias,

On 31/05/21 16.18, Mathias Kunter wrote:
Wouldn't it make sense if "git pull" would by default also pull the 
branch with the same name from the remote, in case no upstream is 
configured?

If I can push to a remote with a simple "git push", then I'd also expect 
to be able to pull from that same remote with a simple "git pull".

Does anything speak against this?

Example:

   git clone $url
   git checkout -b fix-1
   # do commits
   git push           # push to origin/fix-1 (works)
   git push origin    # push to origin/fix-1 (works)
   # other people push to origin/fix-1
   git pull           # pull from origin/fix-1 (fails)
   git pull origin    # pull from origin/fix-1 (fails)
IME, I did git fetch first before I did git pull, unless I have repos 
that I didn't intentionally want to contribute to (just collecting 
them). When I choose to work, I always create a branch, then submit 
PR/patches from that against mainline.

Since you do centralized workflow like above, I advise you to integrate 
from remote with git fetch + git merge.

And you asked whether plain git pull can work. It is yes, provided that 
you don't do any local work on remote-tracking branches (such as 
mainline or hotfixes).

-- 
An old man doll... just what I always wanted! - Clara

Re: Default behavior of git pull

From: Mathias Kunter <hidden>
Date: 2021-05-31 13:03:48

Hi Bagas,

thanks for your reply.
Since you do centralized workflow like above, I advise you to integrate
from remote with git fetch + git merge.
I'm aware of this. However, if I know that I didn't commit any changes 
to the local branch since I last pushed it (as in the given example), 
then it should be possible to use a simple "git pull" IMHO.

It seems unnecessarily complex to me that users would have to use "git 
pull origin fix-1" in this situation, when a simple "git pull" could 
also work.


Am 31.05.21 um 13:27 schrieb Bagas Sanjaya:
Hi Mathias,

On 31/05/21 16.18, Mathias Kunter wrote:
quoted
Wouldn't it make sense if "git pull" would by default also pull the 
branch with the same name from the remote, in case no upstream is 
configured?

If I can push to a remote with a simple "git push", then I'd also 
expect to be able to pull from that same remote with a simple "git pull".

Does anything speak against this?

Example:

   git clone $url
   git checkout -b fix-1
   # do commits
   git push           # push to origin/fix-1 (works)
   git push origin    # push to origin/fix-1 (works)
   # other people push to origin/fix-1
   git pull           # pull from origin/fix-1 (fails)
   git pull origin    # pull from origin/fix-1 (fails)
IME, I did git fetch first before I did git pull, unless I have repos 
that I didn't intentionally want to contribute to (just collecting 
them). When I choose to work, I always create a branch, then submit 
PR/patches from that against mainline.

Since you do centralized workflow like above, I advise you to integrate 
from remote with git fetch + git merge.

And you asked whether plain git pull can work. It is yes, provided that 
you don't do any local work on remote-tracking branches (such as 
mainline or hotfixes).

RE: Default behavior of git pull

From: Felipe Contreras <hidden>
Date: 2021-07-14 15:31:41

Hi Mathias,

I hadn't seen this mail.

Mathias Kunter wrote:
Wouldn't it make sense if "git pull" would by default also pull the 
branch with the same name from the remote, in case no upstream is 
configured?
I agree.

In fact, back in 2014 I wrote a builtin called `git update` to fix all
the problems with `git pull`. That command worked exactly as you
suggest.

I recently sent a new proposal for `git update` [1] asking for feedback on
how different arguments should be handled. Nobody has suggested
anything.

For the next iteration I will implement what you suggested, in my
opinion it makes sense.

Cheers.

[1] https://lore.kernel.org/git/20210705123209.1808663-1-felipe.contreras@gmail.com/

-- 
Felipe Contreras
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help