git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* `git reset` for delete + intent-to-add doesn't reset
@ 2019-01-08  7:25 Anthony Sottile
  2019-01-08  7:29 ` Anthony Sottile
  2019-01-08  9:44 ` Duy Nguyen
  0 siblings, 2 replies; 4+ messages in thread
From: Anthony Sottile @ 2019-01-08  7:25 UTC (permalink / raw)
  To: Git Mailing List

```
git --version
rm -rf t
git init t
cd t
touch a
git add a
git commit -m "add a"
git rm a
touch a
git add --intent-to-add a
git status --short
git reset -- a
git status --short
```

(the git version below is compiled from
ecbdaf0899161c067986e9d9d564586d4b045d62)

```
$ bash -x t.sh
+ git --version
git version 2.20.GIT
+ rm -rf t
+ git init t
Initialized empty Git repository in /tmp/t/t/.git/
+ cd t
+ touch a
+ git add a
+ git commit -m 'add a'
[master (root-commit) 95a1815] add a
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a
+ git rm a
rm 'a'
+ touch a
+ git add --intent-to-add a
+ git status --short
DA a
+ git reset -- a
Unstaged changes after reset:
A    a
+ git status --short
DA a
```

Even `git reset --intent-to-add -- a` or `git checkout -- a` don't
seem to clear the `intent-to-add` state

How do I reset the intent-to-add status in this case?

Anthony

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

* Re: `git reset` for delete + intent-to-add doesn't reset
  2019-01-08  7:25 `git reset` for delete + intent-to-add doesn't reset Anthony Sottile
@ 2019-01-08  7:29 ` Anthony Sottile
  2019-01-08  9:44 ` Duy Nguyen
  1 sibling, 0 replies; 4+ messages in thread
From: Anthony Sottile @ 2019-01-08  7:29 UTC (permalink / raw)
  To: Git Mailing List

On Mon, Jan 7, 2019 at 11:25 PM Anthony Sottile <asottile@umich.edu> wrote:
> Even `git reset --intent-to-add -- a` or `git checkout -- a` don't
> seem to clear the `intent-to-add` state
>
> How do I reset the intent-to-add status in this case?
>
> Anthony

Pressed send too quickly, it appears I can use `git rm --cached -- a`
to undo that.

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

* Re: `git reset` for delete + intent-to-add doesn't reset
  2019-01-08  7:25 `git reset` for delete + intent-to-add doesn't reset Anthony Sottile
  2019-01-08  7:29 ` Anthony Sottile
@ 2019-01-08  9:44 ` Duy Nguyen
  2019-01-08 10:06   ` Duy Nguyen
  1 sibling, 1 reply; 4+ messages in thread
From: Duy Nguyen @ 2019-01-08  9:44 UTC (permalink / raw)
  To: Anthony Sottile; +Cc: Git Mailing List

On Tue, Jan 8, 2019 at 2:28 PM Anthony Sottile <asottile@umich.edu> wrote:
>
> ```
> git --version
> rm -rf t
> git init t
> cd t
> touch a
> git add a
> git commit -m "add a"
> git rm a
> touch a
> git add --intent-to-add a
> git status --short
> git reset -- a

"git reset" without "-- a" does remove intent-to-add status. I'll look
into whether "reset -- a" should do the same.

> git status --short
> ```
>
> (the git version below is compiled from
> ecbdaf0899161c067986e9d9d564586d4b045d62)
>
> ```
> $ bash -x t.sh
> + git --version
> git version 2.20.GIT
> + rm -rf t
> + git init t
> Initialized empty Git repository in /tmp/t/t/.git/
> + cd t
> + touch a
> + git add a
> + git commit -m 'add a'
> [master (root-commit) 95a1815] add a
>  1 file changed, 0 insertions(+), 0 deletions(-)
>  create mode 100644 a
> + git rm a
> rm 'a'
> + touch a
> + git add --intent-to-add a
> + git status --short
> DA a
> + git reset -- a
> Unstaged changes after reset:
> A    a
> + git status --short
> DA a
> ```
>
> Even `git reset --intent-to-add -- a` or `git checkout -- a` don't
> seem to clear the `intent-to-add` state
>
> How do I reset the intent-to-add status in this case?
>
> Anthony



-- 
Duy

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

* Re: `git reset` for delete + intent-to-add doesn't reset
  2019-01-08  9:44 ` Duy Nguyen
@ 2019-01-08 10:06   ` Duy Nguyen
  0 siblings, 0 replies; 4+ messages in thread
From: Duy Nguyen @ 2019-01-08 10:06 UTC (permalink / raw)
  To: Anthony Sottile; +Cc: Git Mailing List

On Tue, Jan 8, 2019 at 4:44 PM Duy Nguyen <pclouds@gmail.com> wrote:
>
> On Tue, Jan 8, 2019 at 2:28 PM Anthony Sottile <asottile@umich.edu> wrote:
> >
> > ```
> > git --version
> > rm -rf t
> > git init t
> > cd t
> > touch a
> > git add a
> > git commit -m "add a"
> > git rm a
> > touch a
> > git add --intent-to-add a
> > git status --short
> > git reset -- a
>
> "git reset" without "-- a" does remove intent-to-add status.

No I'm wrong. But it was because I didn't follow your exact steps.

This is quite unique corner case. What happens is "git reset"
internally does "git diff --cached" basically to see what paths need
to update, then reset those paths and as a side effect, intent-to-add
status will be removed. But in this case, "a" in HEAD has empty
content, exactly the same content represented by an intent-to-add
entry. So "git diff --cached" decides there's no changes in "a", no
need to update it (so i-t-a status remains).

This can only happen if a file in HEAD is empty, which is quite
unlikely. This fix could be go through the index list the second time
just for resetting i-t-a status, but I'm not sure if it's worth doing.
-- 
Duy

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

end of thread, other threads:[~2019-01-08 10:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-08  7:25 `git reset` for delete + intent-to-add doesn't reset Anthony Sottile
2019-01-08  7:29 ` Anthony Sottile
2019-01-08  9:44 ` Duy Nguyen
2019-01-08 10:06   ` Duy Nguyen

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).