git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Simple git push --tags deleted all branches
@ 2018-11-28 16:50 Mateusz Loskot
  2018-11-28 18:13 ` Mateusz Loskot
  2018-11-29 15:03 ` Ævar Arnfjörð Bjarmason
  0 siblings, 2 replies; 6+ messages in thread
From: Mateusz Loskot @ 2018-11-28 16:50 UTC (permalink / raw)
  To: git

Hi,

(using git version 2.19.2.windows.1)

I've just encountered one of those WTH moments.

I have a bare repository

core.git (BARE:master) $ git branch
  1.0
  2.0
* master

core.git (BARE:master) $ git tag
1.0.1651
1.0.766
2.0.1103
2.0.1200

I published the repo using: git push --all --follow-tags

This succeeded, but there seem to be no tags pushed, just branches.
So, I followed with

core.git (BARE:master) $ git push --tags
To XXX
 - [deleted]               1.0
 - [deleted]               2.0
 ! [remote rejected]       master (refusing to delete the current
branch: refs/heads/master)
error: failed to push some refs to 'XXX'

And, I've found out that all branches and tags have been
wiped in both, local repo and remote :)

I restored the repo and tried out

git push origin 1.0
git push origin --tags

and this time both succeeded, without wiping out any refs.

Could anyone help me to understand why remote-less

git push --tags

is/was so dangerous and unforgiving?!

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Simple git push --tags deleted all branches
  2018-11-28 16:50 Simple git push --tags deleted all branches Mateusz Loskot
@ 2018-11-28 18:13 ` Mateusz Loskot
  2018-11-29 15:03 ` Ævar Arnfjörð Bjarmason
  1 sibling, 0 replies; 6+ messages in thread
From: Mateusz Loskot @ 2018-11-28 18:13 UTC (permalink / raw)
  To: git

On Wed, 28 Nov 2018 at 17:50, Mateusz Loskot <mateusz@loskot.net> wrote:
>
> (using git version 2.19.2.windows.1)
> [...]
> I restored the repo and tried out
>
> git push origin 1.0
> git push origin --tags
>
> and this time both succeeded, without wiping out any refs.

And, to my surprise, this pushed all branches and all tags:

git push --all origin

So, I  did not have to run follow with tags push only using

git push --tags origin

Has anything changes in [1] that now
--all
Push all branches ...AND tags?

[1] https://git-scm.com/docs/git-push#git-push---all

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Simple git push --tags deleted all branches
  2018-11-28 16:50 Simple git push --tags deleted all branches Mateusz Loskot
  2018-11-28 18:13 ` Mateusz Loskot
@ 2018-11-29 15:03 ` Ævar Arnfjörð Bjarmason
  2018-11-29 15:18   ` Mateusz Loskot
  1 sibling, 1 reply; 6+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2018-11-29 15:03 UTC (permalink / raw)
  To: Mateusz Loskot; +Cc: git


On Wed, Nov 28 2018, Mateusz Loskot wrote:

> Hi,
>
> (using git version 2.19.2.windows.1)
>
> I've just encountered one of those WTH moments.
>
> I have a bare repository
>
> core.git (BARE:master) $ git branch
>   1.0
>   2.0
> * master
>
> core.git (BARE:master) $ git tag
> 1.0.1651
> 1.0.766
> 2.0.1103
> 2.0.1200
>
> I published the repo using: git push --all --follow-tags
>
> This succeeded, but there seem to be no tags pushed, just branches.
> So, I followed with
>
> core.git (BARE:master) $ git push --tags
> To XXX
>  - [deleted]               1.0
>  - [deleted]               2.0
>  ! [remote rejected]       master (refusing to delete the current
> branch: refs/heads/master)
> error: failed to push some refs to 'XXX'
>
> And, I've found out that all branches and tags have been
> wiped in both, local repo and remote :)
>
> I restored the repo and tried out
>
> git push origin 1.0
> git push origin --tags
>
> and this time both succeeded, without wiping out any refs.
>
> Could anyone help me to understand why remote-less
>
> git push --tags
>
> is/was so dangerous and unforgiving?!

Since nobody's replied yet, I can't see what's going on here from the
info you've provided. My guess is that you have something "mirror" set
on the remote.

It seems you can't share the repo or its URL, but could you share the
scrubbed output of 'git config -l --show-origin' when run inside this
repository?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Simple git push --tags deleted all branches
  2018-11-29 15:03 ` Ævar Arnfjörð Bjarmason
@ 2018-11-29 15:18   ` Mateusz Loskot
  2018-11-29 15:39     ` Ævar Arnfjörð Bjarmason
  0 siblings, 1 reply; 6+ messages in thread
From: Mateusz Loskot @ 2018-11-29 15:18 UTC (permalink / raw)
  To: git

On Thu, 29 Nov 2018 at 16:03, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
> On Wed, Nov 28 2018, Mateusz Loskot wrote:
> >
> > (using git version 2.19.2.windows.1)
> >
> > I've just encountered one of those WTH moments.
> >
> > I have a bare repository
> >
> > core.git (BARE:master) $ git branch
> >   1.0
> >   2.0
> > * master
> >
> > core.git (BARE:master) $ git tag
> > 1.0.1651
> > 1.0.766
> > 2.0.1103
> > 2.0.1200
> >
> > I published the repo using: git push --all --follow-tags
> >
> > This succeeded, but there seem to be no tags pushed, just branches.
> > So, I followed with
> >
> > core.git (BARE:master) $ git push --tags
> > To XXX
> >  - [deleted]               1.0
> >  - [deleted]               2.0
> >  ! [remote rejected]       master (refusing to delete the current
> > branch: refs/heads/master)
> > error: failed to push some refs to 'XXX'
> >
> > And, I've found out that all branches and tags have been
> > wiped in both, local repo and remote :)
> >
> > I restored the repo and tried out
> >
> > git push origin 1.0
> > git push origin --tags
> >
> > and this time both succeeded, without wiping out any refs.
> >
> > Could anyone help me to understand why remote-less
> >
> > git push --tags
> >
> > is/was so dangerous and unforgiving?!
>
> Since nobody's replied yet, I can't see what's going on here from the
> info you've provided. My guess is that you have something "mirror" set
> on the remote.

Thank you for responding.

The git push --tags hugely surprised me, and here is genuine screenshot
https://twitter.com/mloskot/status/1068072285846859776

> It seems you can't share the repo or its URL, but could you share the
> scrubbed output of 'git config -l --show-origin' when run inside this
> repository?

Here is complete output. I have not stripped the basics like aliases,
just in case.

```
core-external-metadata.git (BARE:master) $ git config -l --show-origin
file:"C:\\ProgramData/Git/config"       core.symlinks=false
file:"C:\\ProgramData/Git/config"       core.autocrlf=true
file:"C:\\ProgramData/Git/config"       color.diff=auto
file:"C:\\ProgramData/Git/config"       color.status=auto
file:"C:\\ProgramData/Git/config"       color.branch=auto
file:"C:\\ProgramData/Git/config"       color.interactive=true
file:"C:\\ProgramData/Git/config"       help.format=html
file:"C:\\ProgramData/Git/config"       http.sslcainfo=C:/Program
Files/Git/mingw64/ssl/certs/ca-bundle.crt
file:"C:\\ProgramData/Git/config"       diff.astextplain.textconv=astextplain
file:"C:\\ProgramData/Git/config"       rebase.autosquash=true
file:C:/Program Files/Git/mingw64/etc/gitconfig
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
file:C:/Program Files/Git/mingw64/etc/gitconfig http.sslbackend=openssl
file:C:/Program Files/Git/mingw64/etc/gitconfig
diff.astextplain.textconv=astextplain
file:C:/Program Files/Git/mingw64/etc/gitconfig
filter.lfs.clean=git-lfs clean -- %f
file:C:/Program Files/Git/mingw64/etc/gitconfig
filter.lfs.smudge=git-lfs smudge -- %f
file:C:/Program Files/Git/mingw64/etc/gitconfig
filter.lfs.process=git-lfs filter-process
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.required=true
file:C:/Program Files/Git/mingw64/etc/gitconfig credential.helper=manager
file:C:/Users/mateuszl/.gitconfig       user.name=Mateusz Łoskot
file:C:/Users/mateuszl/.gitconfig       user.email=mateusz@loskot.net
file:C:/Users/mateuszl/.gitconfig       github.user=mloskot
file:C:/Users/mateuszl/.gitconfig       core.editor=vim
file:C:/Users/mateuszl/.gitconfig       color.branch=auto
file:C:/Users/mateuszl/.gitconfig       color.diff=auto
file:C:/Users/mateuszl/.gitconfig       color.status=auto
file:C:/Users/mateuszl/.gitconfig       color.ui=auto
file:C:/Users/mateuszl/.gitconfig       alias.br=branch
file:C:/Users/mateuszl/.gitconfig       alias.bv=branch -vv
file:C:/Users/mateuszl/.gitconfig       alias.brv=branch -vv
file:C:/Users/mateuszl/.gitconfig       alias.bra=branch -a
file:C:/Users/mateuszl/.gitconfig       alias.ci=commit --verbose
file:C:/Users/mateuszl/.gitconfig       alias.cia=commit --verbose --amend
file:C:/Users/mateuszl/.gitconfig       alias.ciae=commit --verbose
--amend --no-edit
file:C:/Users/mateuszl/.gitconfig       alias.co=checkout
file:C:/Users/mateuszl/.gitconfig       alias.dc=diff --cached
file:C:/Users/mateuszl/.gitconfig       alias.df=diff
file:C:/Users/mateuszl/.gitconfig       alias.gf=flow
file:C:/Users/mateuszl/.gitconfig       alias.lg=log --color --graph
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)
%C(bold blue)<%an>%Creset' --abbrev-commit
file:C:/Users/mateuszl/.gitconfig       alias.lol=log --graph
--decorate --pretty=oneline --abbrev-commit
file:C:/Users/mateuszl/.gitconfig       alias.lola=log --graph
--decorate --pretty=oneline --abbrev-commit --all
file:C:/Users/mateuszl/.gitconfig       alias.ls=ls-files
file:C:/Users/mateuszl/.gitconfig       alias.lst=lfs status
file:C:/Users/mateuszl/.gitconfig       alias.rt=remote
file:C:/Users/mateuszl/.gitconfig       alias.rtv=remote -v
file:C:/Users/mateuszl/.gitconfig       alias.st=status
file:C:/Users/mateuszl/.gitconfig       alias.ghclm=!sh -c 'git log
$1...$2  --pretty=format:"* [view](http://github.com/$3/$4/commit/%H)
- %s"' -
file:C:/Users/mateuszl/.gitconfig       alias.ign=ls-files -o -i
--exclude-standard
file:C:/Users/mateuszl/.gitconfig
alias.prune-branches-origin=!git remote prune origin && git branch -vv
| grep ': gone]' | awk '{print $1}' | xargs -r git branch -D
file:C:/Users/mateuszl/.gitconfig
alias.prune-branches-mloskot=!git remote prune mloskot && git branch
-vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D
file:C:/Users/mateuszl/.gitconfig       alias.hist=log
--pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
file:C:/Users/mateuszl/.gitconfig       commit.template=~/.gitmessage
file:C:/Users/mateuszl/.gitconfig       credential.helper=manager
file:C:/Users/mateuszl/.gitconfig       filter.lfs.clean=git-lfs clean -- %f
file:C:/Users/mateuszl/.gitconfig       filter.lfs.smudge=git-lfs
smudge --skip -- %f
file:C:/Users/mateuszl/.gitconfig       filter.lfs.process=git-lfs
filter-process --skip
file:C:/Users/mateuszl/.gitconfig       filter.lfs.required=true
file:config     core.repositoryformatversion=0
file:config     core.filemode=false
file:config     core.bare=true
file:config     core.symlinks=false
file:config     core.ignorecase=true
file:config     remote.origin.url=https://xxx.com/core-external-metadata.git
file:config     remote.origin.fetch=+refs/*:refs/*
file:config     remote.origin.mirror=true
file:config
lfs.https://xxx.com/core-external-metadata.git/info/lfs.access=basic
```

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Simple git push --tags deleted all branches
  2018-11-29 15:18   ` Mateusz Loskot
@ 2018-11-29 15:39     ` Ævar Arnfjörð Bjarmason
  2018-12-04 19:00       ` Mateusz Loskot
  0 siblings, 1 reply; 6+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2018-11-29 15:39 UTC (permalink / raw)
  To: Mateusz Loskot; +Cc: git


On Thu, Nov 29 2018, Mateusz Loskot wrote:

> On Thu, 29 Nov 2018 at 16:03, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
>> On Wed, Nov 28 2018, Mateusz Loskot wrote:
>> >
>> > (using git version 2.19.2.windows.1)
>> >
>> > I've just encountered one of those WTH moments.
>> >
>> > I have a bare repository
>> >
>> > core.git (BARE:master) $ git branch
>> >   1.0
>> >   2.0
>> > * master
>> >
>> > core.git (BARE:master) $ git tag
>> > 1.0.1651
>> > 1.0.766
>> > 2.0.1103
>> > 2.0.1200
>> >
>> > I published the repo using: git push --all --follow-tags
>> >
>> > This succeeded, but there seem to be no tags pushed, just branches.
>> > So, I followed with
>> >
>> > core.git (BARE:master) $ git push --tags
>> > To XXX
>> >  - [deleted]               1.0
>> >  - [deleted]               2.0
>> >  ! [remote rejected]       master (refusing to delete the current
>> > branch: refs/heads/master)
>> > error: failed to push some refs to 'XXX'
>> >
>> > And, I've found out that all branches and tags have been
>> > wiped in both, local repo and remote :)
>> >
>> > I restored the repo and tried out
>> >
>> > git push origin 1.0
>> > git push origin --tags
>> >
>> > and this time both succeeded, without wiping out any refs.
>> >
>> > Could anyone help me to understand why remote-less
>> >
>> > git push --tags
>> >
>> > is/was so dangerous and unforgiving?!
>>
>> Since nobody's replied yet, I can't see what's going on here from the
>> info you've provided. My guess is that you have something "mirror" set
>> on the remote.
>
> Thank you for responding.
>
> The git push --tags hugely surprised me, and here is genuine screenshot
> https://twitter.com/mloskot/status/1068072285846859776
>
>> It seems you can't share the repo or its URL, but could you share the
>> scrubbed output of 'git config -l --show-origin' when run inside this
>> repository?
>
> Here is complete output. I have not stripped the basics like aliases,
> just in case.

Right, it's because you used --mirror, the important bit:

> file:config     remote.origin.url=https://xxx.com/core-external-metadata.git
> file:config     remote.origin.fetch=+refs/*:refs/*
> file:config     remote.origin.mirror=true
> file:config

I.e. you have cloned with the --mirror flag, this is what it's supposed
to do: https://git-scm.com/docs/git-clone#git-clone---mirror
https://git-scm.com/docs/git-fetch#git-fetch---prune

I.e. you push and git tries to mirror the refs you have locally to the
remote, including pruning stuff in the remote.

This is useful, but not what you wanted here. It's used for e.g. making
an up-to-date copy of a repo from server A to server B in HA setups
where you'd like to fail over to server B and get the same refs you had
on A.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Simple git push --tags deleted all branches
  2018-11-29 15:39     ` Ævar Arnfjörð Bjarmason
@ 2018-12-04 19:00       ` Mateusz Loskot
  0 siblings, 0 replies; 6+ messages in thread
From: Mateusz Loskot @ 2018-12-04 19:00 UTC (permalink / raw)
  To: git

On Thu, 29 Nov 2018 at 16:39, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
> On Thu, Nov 29 2018, Mateusz Loskot wrote:
> > On Thu, 29 Nov 2018 at 16:03, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
> >> On Wed, Nov 28 2018, Mateusz Loskot wrote:
> >> >
> >> > (using git version 2.19.2.windows.1)
> >> >
> >> > I've just encountered one of those WTH moments.
> >> >
> >> > I have a bare repository
> >> >
> >> > core.git (BARE:master) $ git branch
> >> >   1.0
> >> >   2.0
> >> > * master
> >> >
> >> > core.git (BARE:master) $ git tag
> >> > 1.0.1651
> >> > 1.0.766
> >> > 2.0.1103
> >> > 2.0.1200
> >> >
> >> > I published the repo using: git push --all --follow-tags
> >> >
> >> > This succeeded, but there seem to be no tags pushed, just branches.
> >> > So, I followed with
> >> >
> >> > core.git (BARE:master) $ git push --tags
> >> > To XXX
> >> >  - [deleted]               1.0
> >> >  - [deleted]               2.0
> >> >  ! [remote rejected]       master (refusing to delete the current
> >> > branch: refs/heads/master)
> >> > error: failed to push some refs to 'XXX'
> >> >
> >> > And, I've found out that all branches and tags have been
> >> > wiped in both, local repo and remote :)
> >> >
> >> > I restored the repo and tried out
> >> >
> >> > git push origin 1.0
> >> > git push origin --tags
> >> >
> >> > and this time both succeeded, without wiping out any refs.
> >> >
> >> > Could anyone help me to understand why remote-less
> >> >
> >> > git push --tags
> >> >
> >> > is/was so dangerous and unforgiving?!
> >>
> >> Since nobody's replied yet, I can't see what's going on here from the
> >> info you've provided. My guess is that you have something "mirror" set
> >> on the remote.
> >
> > Thank you for responding.
> >
> > The git push --tags hugely surprised me, and here is genuine screenshot
> > https://twitter.com/mloskot/status/1068072285846859776
> >
> >> It seems you can't share the repo or its URL, but could you share the
> >> scrubbed output of 'git config -l --show-origin' when run inside this
> >> repository?
> >
> > Here is complete output. I have not stripped the basics like aliases,
> > just in case.
>
> Right, it's because you used --mirror, the important bit:
>
> > file:config     remote.origin.url=https://xxx.com/core-external-metadata.git
> > file:config     remote.origin.fetch=+refs/*:refs/*
> > file:config     remote.origin.mirror=true
> > file:config
>
> I.e. you have cloned with the --mirror flag, this is what it's supposed
> to do: https://git-scm.com/docs/git-clone#git-clone---mirror
> https://git-scm.com/docs/git-fetch#git-fetch---prune
>
> I.e. you push and git tries to mirror the refs you have locally to the
> remote, including pruning stuff in the remote.

Thank you very much for diagnosing my issue.
I was not aware about how --mirror affects the workflow.
It all makes perfect sense now.

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-12-04 19:01 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-28 16:50 Simple git push --tags deleted all branches Mateusz Loskot
2018-11-28 18:13 ` Mateusz Loskot
2018-11-29 15:03 ` Ævar Arnfjörð Bjarmason
2018-11-29 15:18   ` Mateusz Loskot
2018-11-29 15:39     ` Ævar Arnfjörð Bjarmason
2018-12-04 19:00       ` Mateusz Loskot

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).