git diff неотслеживаемого файла с веткой, в которой есть тот же файл, показывающий diff - PullRequest
0 голосов
/ 26 октября 2018

У меня есть 2 файла, file1 и file2.
file1 находится в master.
branch1 - ветвь, созданная из master.
file2 находится только в branch1.

КогдаЯ делаю это, я вижу diff.

$ git checkout branch1
Switched to branch 'branch1'

$ cat file2
branch1 file

$ cp file2 file2_bak

$ git checkout master
Switched to branch 'master'

$ mv file2_bak file2

$ git diff branch1
diff --git a/file2 b/file2
deleted file mode 100644
index 6fbd376..0000000
--- a/file2
+++ /dev/null
@@ -1 +0,0 @@
-branch1 file

Почему он показывает diff, когда file2 существует как в branch1, так и в local?Есть ли способ предотвратить появление этого различий?

1 Ответ

0 голосов
/ 27 октября 2018

Ваша команда git diff branch1 сравнивает branch1 с вашим текущим рабочим деревом.Но git diff только отслеживает то, что он отслеживает - для git нет file2 в master, только в branch1.Разница - это «изменение», необходимое для получения ОТ состояния в branch1 К состоянию в master - что означает, что существующий file2 должен быть удален.Если вы вместо этого сделаете git diff HEAD branch1, тогда diff будет от master до branch1, и файл будет добавлен.Но все это относится только к отслеживаемым файлам.

Есть одна вещь, которую вы можете немного упростить: вам не нужно переключать ветви, чтобы получить file2master вы можете сделать

git cat-file blob branch1:file2 > file2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...