1

I'd like to reset to a commit and, if there's any new file in my working directory, it should be deleted.

That was the behavior I've expected from git reset --hard [<commit>] but it simply ignores new files while reverting changes on modified files to how it was.

Consider the following example, where I do the following:

  • delete file main.c

  • commit this change

  • create file main.c

  • revert to previous commit

And expected main.c to no longer exist.

$:~/dev/gittests$ ls
main.c
$:~/dev/gittests$ rm main.c
$:~/dev/gittests$ git add *
fatal: pathspec '*' não encontrou nenhum arquivo
$:~/dev/gittests$ git status
No ramo master
Mudanças a serem submetidas:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    main.c

$:~/dev/gittests$ git commit -m "deleted main"
[master 84de2d3] deleted main
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 main.c
$:~/dev/gittests$ ls
$:~/dev/gittests$ touch main.c
$:~/dev/gittests$ ls
main.c
$:~/dev/gittests$ git status
No ramo master
Arquivos não monitorados:
  (utilize "git add <arquivo>..." para incluir o que será submetido)

    main.c

nada adicionado ao envio mas arquivos não registrados estão presentes (use "git add" to registrar)
$:~/dev/gittests$ git log
commit 84de2d30505cb6526a2f28918c8b37e4c086db59 (HEAD -> master)
Author: ******
Date:   Wed May 15 01:34:27 2019 -0300

    deleted main

commit 04382fc20f2fe6dc36ce4443c97f83b786f87781
Author: *****
Date:   Wed May 15 01:14:02 2019 -0300

    initial commit
$:~/dev/gittests$ git reset --hard 84de2d
HEAD is now at 84de2d3 deleted main
$:~/dev/gittests$ ls
main.c
Tadeu Moreira
  • 31
  • 1
  • 8

0 Answers0