Синтаксис для использования git diff
является
git diff [--no-index] <path> <path>
В вашем случае --no-index
предполагается неявно. Таким образом, команда
git diff a b
предполагает, что b
более новая версия файла a
. Запуск вашей команды производит патч, который выглядит следующим образом:
$ git diff --no-index 123.txt 456.txt
diff --git a/123.txt b/456.txt
index 97f93f4..9fa0bac 100644
--- a/123.txt
+++ b/456.txt
@@ -1 +1 @@
-123.txt
+456.txt
Если вы попытаетесь сделать это с более чем 2-х файлов, есть ошибка:
$ git diff -- 123.txt 456.txt 789.txt
Not a git repository
To compare two paths outside a working tree:
usage: git diff [--no-index] <path> <path>
$ git diff --no-index 123.txt 456.txt 789.txt
usage: git diff --no-index <path> <path>
Один из способов (если вы хотите создать патч с добавлением a
и b
) будет создавать новое git-репо во временном каталоге. . Вы можете создать первоначальный коммита файлы не используя
git commit --allow-empty -m "Initial"
и скопировать файлы a
и b
в
После запуска git add --all
, git diff --staged > test.patch
создаст правильный патч, как это:
diff --git a/123.txt b/123.txt
new file mode 100644
index 0000000..97f93f4
--- /dev/null
+++ b/123.txt
@@ -0,0 +1 @@
+123.txt
diff --git a/456.txt b/456.txt
new file mode 100644
index 0000000..9fa0bac
--- /dev/null
+++ b/456.txt
@@ -0,0 +1 @@
+456.txt
diff --git a/789.txt b/789.txt
new file mode 100644
index 0000000..a25ef22
--- /dev/null
+++ b/789.txt
@@ -0,0 +1 @@
+789.txt
Каков результат 'git status' до и после применения патча? – rlee827
@ rlee827 Я не делаю этого внутри репозитория. – timakro