2015-03-04 4 views
3

Из-за инструментов, которые я обычно использую, я часто переименовываю файл и вношу изменения в него, прежде чем готовиться к фиксации.Укажите Git Переименовать после изменений

На данный момент git больше не определяет файл как простое переименование, потому что содержимое файла отличается.

Есть ли команда, которую я могу использовать для указания того, что какой-то файл, на самом деле также является переименованием другого файла, даже если содержимое выглядит иначе?

+0

ли вы использовать 'GIT mv' переименовать? 'git status' должен в этом случае сказать вам, что вы переименовываете и модифицируете файл. – Jan

+0

Возможный дубликат [Как git обнаруживает похожие файлы для обнаружения переименования?] (Http://stackoverflow.com/questions/7938582/how-does-git-detect-similar-files-for-its-rename-detection) –

+0

@Jan Нет, я обычно переименовываю файлы через другие инструменты, а не git. Поэтому я надеялся, что есть команда, чтобы я мог задним числом сообщить серверу, что произошло переименование, которое оно не обнаружило. –

ответ

4

Не в Git. Git использует сходство на основе эвристического обнаружения переименования (возможно, потребуется включить его для просмотра изменений: git diff -M или git config diff.renames true всегда использовать его (или git diff -C и git config diff.renames copies также обнаружить копии) Он обнаруживает переименовывает на лету. .

Это не делает переименования отслеживания и не хранит информацию о переименовывает в любом месте.


Это предполагает, что вы не забыли включить переименованный файл в коммите, т.е. вы использовали git mv <old> <new> ... который только mv <old> <new> && git add <new>.

Это означает, что если вы переименовали файл с помощью других инструментов (например, IDE, filemanager и т. Д.), То вам нужно будет git add новый файл (после переименования) и удалить старый файл, если он существует (git rm, чтобы удалить его полностью , git rm --cached, чтобы сохранить его в рабочем каталоге).

3

Для git вы никогда не должны переименовывать и изменять файлы в одной и той же фиксации. вы должны запустить git mv oldName newName, чтобы убедиться, что git знает, что это простой ход файла, а затем зафиксируйте свои изменения.

0

Самый безопасный способ - запустить git mv old new и зафиксировать изменение (а не только этап). Хотя это может сломать вашу сборку. А затем внесите новые изменения.

Существует очень хороший блог и ссылка на обсуждение (шероховатое) от мерзавца создателя этой темы здесь https://coderwall.com/p/_csouq/renaming-and-changing-files-in-git-without-losing-history