В моем выводе git status
неожиданно появляется сообщение "dev / null" после интерактивного добавления исправления для файла, который был переименован. Мне интересно, ожидается ли это, и есть ли веские причины для такого поведения, или это может быть ошибкой.
Ниже приведена простая иллюстрация того, как воспроизвести это. В моем реальном сценарии это немного сложнее, и есть веская причина, почему я использую git add -p
, но я смог свести его к этому минимальному примеру:
$ git init test
Initialized empty Git repository in /local_disk/tmp/test/.git/
$ cd test
$ echo "foo" > foo
$ git add foo
$ git commit -m 'Add foo'
[master (root-commit) 3643b5d] Add foo
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ mv foo bar
$ git add -p
diff --git a/foo b/foo
index 257cc56..0000000
--- a/foo
+++ /dev/null
@@ -1 +0,0 @@
-foo
Stage this hunk [y,n,q,a,d,/,e,?]? y
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: dev/null
# deleted: foo
#
# Changed but not updated:
# (use "git add/rm ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# deleted: dev/null
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# bar
Что такое с "новым файлом: dev / null" и "удаленным файлом: dev / null"? Я ожидаю, что это приведет к точно так же, как если бы я сделал:
$ mv foo bar
$ git rm foo
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# deleted: foo
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# bar
Я использую Git версии 1.6.5.5, а также воспроизвел ее в 1.6.5.4. Я не смог воспроизвести его в моей среде Cygwin с Git версии 1.6.1.2.