У меня 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, так и в локальном? Есть ли способ предотвратить появление этой разницы?
@Blacksilver file1 и file2 - это не одно и то же. file2 в branch1 теперь такой же, как local, но как неотслеживаемый файл в local, а local указывает на master.
Честно говоря, я не понимаю вопроса: что такое «/ dev / null diff»?
@Blacksilver моя последняя команда - "git diff branch1". Он показывает разницу на file2. Но не должно быть разницы, поскольку file2 одинаков для branch1 и local. Есть ли способ подавить это?
Ваша команда 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.
Если не критично, просто используйте обычный diff:
diff file1 file2