threads / discuss / 55809

Default behavior of git pull

Subject: Default behavior of git pull

## tl;dr

4 messages between May 31, 2021 and Jul 14, 2021.

replies: 3people: 3as markdown or json

Mathias Kunter· May 31, 2021, 09:18 UTC · lore

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)
Bagas Sanjaya· May 31, 2021, 11:27 UTC · re: Mathias Kunter · lore

Re: Default behavior of git pull

Hi Mathias,
On 31/05/21 16.18, Mathias Kunter wrote:
Show 19 quoted lines
> 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
Mathias Kunter· May 31, 2021, 13:03 UTC · re: Bagas Sanjaya · lore

Re: Default behavior of git pull

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:
Show 35 quoted lines
> 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).
> 
Felipe Contreras· Jul 14, 2021, 15:31 UTC · re: Mathias Kunter · lore

RE: Default behavior of git pull

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

← back to recent threads