Я получаю неожиданный внешний вид «dev/null» на выходе git status
после интерактивного добавления патча для файла, который был переименован. Мне интересно, ожидалось ли это, и есть какая-то веская причина для этого поведения, или если это может быть ошибкой.Почему git показывает «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.
какая версия git? Я не могу повторить это поведение. Вместо этого git add -p после ответа git mv: никаких изменений –
@William: Использование 'git mv' не эквивалентно, потому что оно перемещается и добавляет файл в одно и то же время. Я перемещаю файл, используя просто «mv», а затем с помощью 'git add -p', чтобы добавить его. –
@ Дана, почему? 'git mv' - это« правильный »способ изменить имя файла. Чтобы удалить файл, который вы используете 'git rm', и чтобы переместить его, вы используете' git mv', не просто переместите файл самостоятельно и ожидайте, что git прочитает ваши мысли :) – rfunduk