Git diff неотслеживаемого файла против ветки, в которой есть тот же файл, показывающий разницу

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

Когда я это делаю, я вижу разницу.

$ 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

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

Если не критично, просто используйте обычный diff: diff file1 file2

SIGSTACKFAULT 26.10.2018 19:01

@Blacksilver file1 и file2 - это не одно и то же. file2 в branch1 теперь такой же, как local, но как неотслеживаемый файл в local, а local указывает на master.

Kushiwaka Maru 26.10.2018 19:06

Честно говоря, я не понимаю вопроса: что такое «/ dev / null diff»?

SIGSTACKFAULT 26.10.2018 19:10

@Blacksilver моя последняя команда - "git diff branch1". Он показывает разницу на file2. Но не должно быть разницы, поскольку file2 одинаков для branch1 и local. Есть ли способ подавить это?

Kushiwaka Maru 26.10.2018 19:12
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
28
1

Ответы 1

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

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

git cat-file blob branch1:file2 > file2

Спасибо. Полагаю, что нет возможности изменить этот файл? По сути, то, что я пытаюсь сделать, - это файл из другого места, и я хочу поместить его в свой локальный компьютер и проверить, совпадает ли он с файлом в ветке 1, но я не хочу проверять ветку 1.

Kushiwaka Maru 29.10.2018 14:12

Другие вопросы по теме