Создание отличия git от ничего
Я пытаюсь создать файл исправления, который будет использоваться через reviewboard.
Это будет начальный патч.
diff -ruN --exclude=.git empty_dir working_dir > mypatch_00.patch
работает, но я получаю "Выбранный файл не является отличием". ошибка.
Есть ли способ заставить его работать с помощью git -diff или diff? Спасибо вам
Ответы
Ответ 1
Если вы хотите получить diff для своего первоначального коммита (возможно, я неправильно понял ваш вопрос), вы можете отобразить его с помощью
git show COMMIT
Альтернативно, чтобы получить его как файл:
git format-patch -1 COMMIT
Где COMMIT
- это ревизия этой фиксации. Если это ваша текущая фиксация, вам не нужно указывать ее вообще.
Однако, если ваша фиксация не является начальной, и вы хотите получить полный diff для своей истории, вам нужно сначала создать пустую ветку:
git checkout --orphan empty # Create orphaned branch
git read-tree --empty # Remove all files from index
git commit --allow-empty -m 'Empty' # Initial commit
Теперь вы можете выполнить полную разницу с пустой ветвью:
git diff empty..master
Ответ 2
Если вам нужен полный diff от ничего к конкретному фиксации, есть более простой способ, чем в принятом ответе:
empty_tree=$(git hash-object -t tree /dev/null)
git diff-tree -p ${empty_tree} $MY_COMMIT [${files}...]
Значение ${empty_tree}
всегда 4b825dc642cb6eb9a060e54bf8d69288fbee4904
, но я предпочитаю не иметь там магического числа.
Ответ 3
Я предпочитаю "пустой" в качестве тега. Самый простой способ:
git tag empty $(git hash-object -t tree /dev/null)
Потому что тег может указывать на tree-ish напрямую, без коммита.
Теперь, чтобы получить все файлы в рабочем дереве:
git diff --name-only empty
Или то же самое со stat:
git diff --stat empty
Все файлы в формате diff:
git diff empty
Проверьте пробелы во всех файлах:
git diff --check empty