Я изменил имя старого файла, который зафиксировал несколько дней назад. Теперь мне нужно название этого оригинального документа для презентации на заседании совета директоров. Если это имеет какое-то значение, я использую iMac OSX, используя iTerm2.
Я уже пробовал следующие команды, но безуспешно. Я ожидаю увидеть фактическое исходное имя файла, пользовательское. Пример ожидаемого результата: «01_Introduction_Statistics.pages»
git log
git log --pretty=oneline --graph --name-status
git show --pretty=oneline --graph --name-status
git diff --name-only
git svn log -v
git show --[=pretty<format>]
git show --oneline
git log --raw
git show --name-only
**git blame -f, --show-name show original filename (Default: auto)
Кажется, что последний дает то, что мне нужно, но я не уверен, как его использовать. Я продолжаю получать сообщение «ошибка: неизвестная опция `-». Я понятия не имею, что это значит.
я уже пробовал
git blame -f, --show-name <hash code>
Он возвращает ошибку. Я растерян и растерян.
Спасибо! Я попробовал следующее, но безуспешно. git виноват -f --show-name d9f0e29d33065468f29efdc60ab361445d94b1a4 фатальный: в HEAD нет такого пути 'd9f0e29d33065468f29efdc60ab361445d94b1a4'
Что такое d9f0e29d33065468f29efdc60ab361445d94b1a4?
Вы можете попробовать git log --all --summary | grep -E 'rename|file move|move', в котором перечислены только сообщения о фиксации, указывающие на переименования (если вы помните сообщения о фиксации и используете повторяющийся шаблон для таких переименований). Если у вас есть представление о каталоге, в котором файл мог изначально находиться, вы можете выполнить поиск в этом конкретном каталоге, используя опцию --follow: git log --follow -- <directory_name>.





в команде git blame флаг -f является псевдонимом для --show-name, ссылки.
Итак, вам следует использовать любой из них, а не оба.
Кажется, вы используете хэш фиксации в своей команде git Assessment, вместо этого используйте имя текущего файла:
git blame -f {currentFilename}
Я наконец получил это! Я использовал: git show --name-only ec391792f5a16ab350b20c9b2626425c4803cff1 Команда вернула имя рассматриваемого файла. Спасибо!
Это будет работать только в том случае, если строки не изменились до переименования файла.
Попробуйте git log --follow <current_file_name>.
Это должно дать историю файла, даже если он изменил имена.
Спасибо! Эта команда тоже хороша. Он возвращает историю имени файла в хеш-коде, а не непосредственно фактическое имя файла. Однако я все еще могу с ним работать и подключить хеш-код к команде: git show --name-only ec391792f5a16ab350b20, и она вернет имя файла на английском языке.
@Chexpeare Добавьте --stat, чтобы показать имя файла и переименовать его. git log --follow --stat <current filename>. Исходное имя файла является последним (самым старым).
Благодаря @mkrieger1, @Christian, @Hujaakbar и @jj2f1 я могу объединить их предложения с дополнительной следующей командой git и получить полное имя файла с расширением на английском языке:
git show --name-only <hash code>
Если у вас есть файл и вы хотите знать, когда он был переименован...
git log --follow --summary --format= <filename>
--follow продолжим листинг истории посредством переименований. --format= подавляет обычный вывод. --summary показывает, когда файл был создан, переименован или изменены его разрешения.
$ git log --follow --summary -w --format= baz
rename bar => baz (100%)
rename foo => bar (100%)
create mode 100644 foo
Первоначальное имя этого файла было foo. Он был переименован в bar без каких-либо изменений содержания. Затем снова переименовал в baz без изменений содержания.
Примечание. Git не отслеживает переименования. Вместо этого он использует эвристику для поиска похожих файлов. Git легко следовать простому git mv, как в истории выше. Однако если вы переименуете файл и измените его за один коммит, Git может не отследить переименование. Это зависит от того, насколько много было изменено и насколько усердно вы скажете Git посмотреть.
По умолчанию он ищет файлы со сходством не менее 50%. Вы можете повлиять на это с помощью -M и -l.
Например, здесь я git mv baz blat добавил строку и внес некоторые изменения в пробелы.
commit 3c3240d16866a91b499fe17d478b82277c83aded
Author: Michael G. Schwern <[email protected]>
Date: Fri May 10 12:22:59 2024 -0700
mv baz blat, add this
diff --git a/baz b/blat
similarity index 37%
rename from baz
rename to blat
index dfa74aa..43b1a69 100644
--- a/baz
+++ b/blat
@@ -1,4 +1,7 @@
this
+that
+
other
-thing
+
+ thing
В результате порог сходства оказался ниже 50%. Мне нужно снизить стандарты Git для поиска переименований до 30%.
$ git log --follow --summary --format= blat
create mode 100644 blat
$ git log --follow --summary --format= -M.3 blat
rename baz => blat (37%)
rename bar => baz (100%)
rename foo => bar (100%)
create mode 100644 foo
Поскольку это эвристика, Git может ошибиться. Вам еще нужно пройти верификацию.
По этой причине, если вам нужно переименовать файл, а затем изменить значительную его часть (а если это очень маленький файл, любое изменение может быть значительным), рекомендуется переименовать один коммит и изменить его в другом, даже если это приводит к нарушению фиксации.
Ух ты! Отличный! Все это очень полезно. Мне удалось отследить весь цикл переименования набора рассматриваемых файлов. Замечательные советы и рекомендации! Спасибо, @Schwern!
убери запятую после
git blame -f,