Файл не отображается в git diff после добавления git. Откуда мне знать, что это произойдет?

У меня был неотслеженный файл, который не появлялся в git diff, и когда я добавил его в область "изменения для фиксации", он все еще не отображается в git diff. Я появляется с git status -v когда я делаю дифф против головы.

Я все еще очень новичок в git, поэтому может ли кто-нибудь сказать мне, будет ли файл зафиксирован, даже если он не отображается в обычном diff, поскольку он был добавлен в промежуточную область?

5 ответов


если вы хотите увидеть поставил изменения в diff, вы все еще можете использовать git diff, вам просто нужно пройти --staged флаг:

david@pav:~/dummy_repo$ echo "Hello, world" > hello.txt
david@pav:~/dummy_repo$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   hello.txt
nothing added to commit but untracked files present
david@pav:~/dummy_repo$ git add hello.txt
david@pav:~/dummy_repo$ git diff
david@pav:~/dummy_repo$ git diff --staged
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..76d5293
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+Hello, world

если вы заботитесь только о том, какие файлы поставлены, вы можете, конечно, сделать git status, а git diff --staged --name-only даст каждому устроили именем на собственную линию.


чтобы увидеть все изменения в рабочем дереве с момента последнего фиксации, включая новые файлы, используйте:

git diff HEAD

см. дополнительные примеры здесь:git-diff


Как вы видели. он показывает, в git status, Так что да, это будет совершено, когда вы git commit его.

вы можете найти полезным использовать визуальный инструмент git, такой как gitx (Mac) или Gitg (Linux),

оно имеет славные панели для того чтобы показать вас поставил, не поставил, ЕТК.

enter image description here

мой скриншот кажется запасным, поскольку в настоящее время у меня нет изменений в этом статусе.


Если вы набрали " git add __", файл будет включен в ваш следующий коммит. Эта фиксация будет перенесена на сервер при запуске "git push".


Я хотел бы добавить к верхнему ответу Дэвида Кейна следующий нюанс: команда...

git diff --staged

...показывает только поэтапные изменения (как указал @rogerdpack).

теперь, если вы только после создания diff одного файла, то мне нечего добавить. Но если вам нужно создать файл diff с помощью "все изменения с момента последней главы", то вы, вероятно, должны (1.) этап все файлы с изменениями (2.) запустите diff, (3.) все отменить добавление файлы, такие как:

git add -A
git diff --staged HEAD
git reset

Излишне говорить, имейте в виду, что эти команды будут возиться с все ваши ранее поставленные и неустановленные файлы, поэтому вы должны проявлять осторожность, если у вас есть много временных файлов, лежащих вокруг. Вижу в git diff-файлов страница руководства для получения дополнительной информации.