git: команда mv

я читал, что команда mv в основном такая же, как

$ mv README.txt README
$ git rm README.txt
$ git add README

просто чтобы быть уверенным, это точно так же, если я сделаю это так:

$ git rm --cached README.txt
# [rename file using right click rename]
$ git add README

person Pacerier    schedule 28.04.2011    source источник
comment
Как кто-то однажды сказал мне: рассматривали ли вы возможность принять один из этих ответов как правильный или дать более подробную информацию о том, чего вы действительно хотите, чтобы мы могли улучшить наши, а вы получали новости?   -  person Gabriel L. Oliveira    schedule 30.04.2011
comment
@ Габриэль Л. Оливейра, я добавил больше деталей в ответы на ответы ..   -  person Pacerier    schedule 01.05.2011


Ответы (3)


Нет. Параметр --cached рекомендуется, когда вы хотите удалить пути (в данном случае README.txt) только из индекса. Файлы рабочего дерева, независимо от того, изменены они или нет, останутся нетронутыми.

Лучшим подходом в этом случае, который переименовывает файл, является использование встроенной команды mv git. Так:

$ git mv README.txt README

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

Шрифт: http://www.kernel.org/pub/software/scm/git/docs/git-rm.html

person Gabriel L. Oliveira    schedule 28.04.2011
comment
эй, извините, я не совсем понимаю, что вы имеете в виду, когда говорите файлы рабочего дерева.. - person Pacerier; 01.05.2011
comment
кстати, вы хотите сказать, что на самом деле оба одинаковы, но 1 рекомендуется по сравнению с другим в зависимости от цели (хотя в любом случае файлы оказались бы в точно таком же состоянии?) - person Pacerier; 01.05.2011
comment
Файлы рабочего дерева @Pacerier означают ваши настоящие файлы (сохраненные на жестком диске). Когда вы используете git rm, git действительно удаляет файл с вашего диска, а при использовании git rm --cached только удаляет файл из индекса (HEAD вашего коммита), оставляя файл (модифицированный или нет) на вашем жестком диске. Я имею в виду, что вместо использования обоих решений лучше использовать git mv, потому что делайте то, что хотите, с помощью одной команды. Кроме того, сделайте так, чтобы дерево git знало это как перемещение (переименование, что угодно), а не как совершенно новый файл. Понятно? - person Gabriel L. Oliveira; 02.05.2011
comment
хорошо, круто, я получил часть рабочих файлов дерева. Однако разве это не так, как бы мы это ни делали, Git в любом случае будет думать, что это совершенно новый файл, а не перемещение (поскольку git действительно не имеет представления о перемещении), так что в основном мне интересно, есть ли какая-либо разница в метаданные, которые git сгенерирует, когда мы сравним 1) с 2) - person Pacerier; 02.05.2011
comment
@Pacerier Ну, я думаю, нет, потому что в обоих случаях вы получите одно и то же. rm в файле и add в другом файле (то, что rm делают одновременно). - person Gabriel L. Oliveira; 02.05.2011

См. раздел Какова цель git-mv?.

Да, это почти то же самое.

person JohnD    schedule 28.04.2011

См. раздел перемещение записей git mv?

Это то же самое.

person Mot    schedule 28.04.2011
comment
Я прочитал ссылку, но она не говорит мне, совпадает ли мой первый выбор со вторым выбором в вопросе. - person Pacerier; 01.05.2011