LINUX.ORG.RU

Странности GIT при использовани push


0

0

Когда я делаю коммит на одной машине(linux) и делаю push или rebase на другую машину(оффтопик), то изменения заливаются правильно - на другой машине создается нужный коммит, но появляются "Изменения, зарегистрированные в индексе, но несохраненные". Т.е. git на второй машине предлагает тут же сделать коммит, который отменяет изменения предыдущего коммита, который был запушшен с первой машины. Если сделать git reset --hard HEAD - то все приходит в норму. Но это ненормально, потому что если на второй машине в это время тоже велось редактирование - то оно тоже будет срезано. Как же заставить git не отменять предыдущий коммит таким странным образом?

Ответ на: комментарий от dmitry_vk

> Пушить в не-bare репозиторий - плохая идея.

Если всё же хочется так делать - пушить надо в отдельную иерархию ветвей (типа external/master, external/branch1 и т. д.), а на второй машине работать с ветвями master, branch1 и т. д., делая merge/rebase с external по необходимости. Или можно наоборот, для работы создать копию веток local/master, local/branch1,..., а пушить напрямую в master, branch1... Главная идея - чтобы ветвь, в которую производится push, не совпадала с текущей checked out ветвью с которой ведётся работа. При операции push гит не трогает индекс, поэтому после пуша индкс остаётся таким, как был (т. е. если модификаций не было - соответствующий старому head-у) (более свежии версии гита при пуше в чекаутную ветвь показывают ворнинг).

slav ★★
()
Ответ на: комментарий от slav

Теперь понял в чем дело, а то после долгой работы с svn эта фишка git меня вела в ступор. Спасибо.

Exabiche
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.