2012-04-05 5 views
2

Я оттолкнул некоторые изменения в центральный репозиторий, а затем сразу же понял, что у меня был старый, ныне устаревшую изменения, лежащие вокруг, и что я ввел сливаться с ней:Нажмите новую историю после переустановки?

before

Затем я использовал мерзавец перебазироваться, чтобы избавиться от этого паразитного родителя:

after

Тогда я толкнул это с git push -f по происхождению. Он отвечает «всем современным».

Теперь я ожидал бы, что центральный репозиторий будет соответствовать тому, что у меня локально. Однако, когда I clone проект заново, у меня все еще есть ложный родитель внутри. Хуже то, что git хочет слиться, и если я позволю ему это сделать, я получаю свою последнюю фиксацию дважды (один раз со старым хешем, а один раз с новым после перезагрузки).

Как получить git, чтобы толкать то, что у меня есть без слияния, и просто принять мое состояние репозитория как новое состояние (так что в основном, отклонить все удаленные отличия)?

или я делаю это неправильно? Я хочу избавиться от «При чтении свойства ...» commit и всей красной строки в верхнем изображении.

ответ

1

Вы можете решить это различными способами. Один из способов - локально восстановить историю, используя сброс, фиксацию и фиксацию. Следующее отменит вашу последнюю фиксацию (начальный импорт ...) и отменит эти изменения.

git reset --mixed HEAD^ 
git stash 

Теперь вы можете сбросить мастер на коммит, вы были раньше вы сделали слияние, предполагая, что abcd1234 является хэш «Тестирование мерзавец.» совершить:

git reset --hard abcd1234 

Теперь вернуть тайник и совершить его снова:

git stash pop 
git add . 
git commit -m 'Initial import of the C++ client library.' 

Теперь, наконец, толкать свой переписан мастер:

git push -f origin master 
+0

Спасибо, это сработало! Не знал о 'stash'. Мне также пришлось изменить 'receive.denyNonFastForwards', чтобы заставить его принять push (http://stackoverflow.com/a/1377930/143091). – jdm

+0

Счастливый, это сработало для вас! :) – ralphtheninja

+0

Вот почему ваш первый толчок не сработал после того, как вы сделали rebase. Имеет смысл. – ralphtheninja

Смежные вопросы