2015-09-28 4 views
0

Я не понимал, что git не понимает переименования файлов (по дизайну (!)) И перемещает некоторые файлы. Затем я положил их обратно. Теперь git log работает, но git log - нет. И Eclipse, похоже, использует последнее. (git log --follow не удалось выполнить мои переименования.)Возврат переименований, чтобы снова запустить git log

Так что я хочу, чтобы как-то вернуть HEAD туда, где он был, прежде чем я начал. Бросьте все, а затем двигайтесь вперед, как будто этого никогда не было. (Я сделал некоторые другие изменения, так как я просто сделаю их снова вручную, без проблем.)

git revert - не ответ. Он просто подтолкнет дополнительные коммиты сверху, что полностью смутит истории. Мне нужно, чтобы изменения ушли или, по крайней мере, вышли прямо из главной линии.

Так что я сделал

git branch moveDead 
git reset --hard 4902b024588678cd493929955f79c6405f6dab9d 
git branch beforeMoves 

Все хорошо. (филиалы только для справок в будущем.)

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

Я главный разработчик в этом репозитории, поэтому, возможно, мы могли бы восстановить основной репозиторий git из резервной копии, а затем переместить его вперед, но это было бы ужасно.

(Там нет филиалов или других осложняющих факторов.)

+0

Не ответ, но: git _does_ понимать переименования файлов, он просто не записывает их явно. Например, «git blame» отлично работает даже при переименовании. Подумайте об использовании другого инструмента - интерфейс Git Eclipse хорош, но довольно простой. – sleske

+1

Хотелось бы, чтобы люди перестали говорить, что Гит понимает переименование. Это не так, и Линус считает необходимым переименовать старые привычки к подрывной деятельности. git log with или without --follow может или не может следовать переименованиям, если файлы не были изменены и не сдвинуты слишком далеко. Но нет записей о фактическом движении. Я не проверял вину, но предполагаю, что он следует той же логике, что и журнал. В этом отношении Гит нарушается, и я не понимал, потому что так много людей говорят, что это работает. Есть некоторые переименования, такие как https://gist.github.com/emiller/6769886, но я их избегаю! – Tuntable

ответ

1

Если вы не отодвигают репозиторий, то вы можете сделать

git reset <commit-id> --hard 

где commit-id является обязательство, что вы хотите пойти (каждый дочерний фиксатор будет LOST)

+0

Ну, да, но я толкнул. (Моя вина, я не упоминал ранее.) – Tuntable