LINUX.ORG.RU

Вопрос про GIT


0

2

Есть аккаунт на гитхаб с проектом, проект живет давно и ничего бы не предвещало опасности, но подключили нового программиста, который косячит иногда по страшному.

Есть ли возможность как-то убить выборочные коммиты этого архаровца, чтобы не пострадал проект? К примеру сейчас появился коммит, в котором он в основную ветку запушил кучу левого инструментария, типа пхп админа и т.д., причем закоммитил к себе их 2 дня назад и не сфетчил новые данные, пересекающихся файлов не было, соответственно ГИТ поставил его коммиты перед сотней нормальных изменений.

Вопрос: как их прибить?

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

Это я знаю, но тут проблема в том, что он залил комиты задним числом, без rebase, к несчастью не вылезло конфликтов, файлы другими не менялись и коммит спокойно встал на 2 дня назад.

Если делать как по этим советам - надо отменять коммиты за 3 дня фактически, это очень долго и не хорошо будет.

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

BaBL ★★★★★
() автор топика

как их прибить?

Сделать rebase -i (интерактивный rebase), в котором указать, что такие-то коммиты надо убить. После этого можно сделать push --force и сказать всем заинтересованным лицам обновиться.

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

Склоняюсь тоже к предыдущему комментарию.

git pull origin master
git rebase -i HEAD~50 # дальше удалить нужный коммит в списке из 50-ти последних
git push -f origin master
Только что проверил, работает. если будут конфликты, останется коммит на прежнем месте с пустыми изменениями вместо бывшего коммита с плохими изменениями.

backbone ★★★★★
()

который косячит иногда по страшному.

Заберите у него права на репозиторий (или на ветку master, если github это позволяет). Пускай коммитит в отдельную ветку/репозиторий, а делать merge в master будет более опытный.

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

Да там много веток, тут речь не про мастер. У нас параллельно несколько проектов с общей базой идет, вот в одну из веток он и смержил свое...

там трабла в том, что это закрытый репозитарий и находится на определенном аккаунте, а все к нему подключены как коллаборейтив. Настроек прав там никаких не видел.

BaBL ★★★★★
() автор топика

мне кажется надо применять административные меры...

true_admin ★★★★★
()

Отключите его.

zz ★★★★
()

сиэма вам надо!

пусть новичок колбасит в своей ветке, и к веткам, где основная работа кипит, не притрагивается. а сиэм изредка будет забирать то, что этот архаровец наколбасил. причем, забирать можно не полностью (man cherry-pick)
ну, а допустили его до мастера - ссзб..

aol ★★★★★
()

а, да, по делу-то забыл написать.
вобщем, если ты собрался «менять историю» на сервере, будь готов к тому, что все, кто с него затянул себе данные, пострадают.

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

aol ★★★★★
()

git rebase -i

С помощью него можно удалять, менять местами, редактировать, мержить/резать коммиты.

потом git push -f

еще есть git cherry-pick, который позволяет перемещать индивидуальные коммиты между ветками.

Macil ★★★★★
()

Не давать ему пушить, пока не сделает нормально. Когда сделает нормально и годно, брать у него изменения. А пока пусть играется со своим форком.

invy ★★★★★
()

Есть ветки. Есть pull request's.

На Хабре есть годная статья как делать пулл реквесты.

Рецепт, вкратце, такой: 1. Архаровец клонирует себе общий проект (в свой аккаунт), 2. Работает над ним там, 3. Когда он что-то реализует, делает pull request в основной проект с описанием того, что сделано.

Далее по итогам можно будет либо принять его pull request либо отклонить с пояснениями.

Плюс на Гитхабе можно открывать тикеты в проекты с обсуждениями, пользуйтесь этим.

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

я правильно понимаю, что для этого каждому такому архаровцу нужно будет брать платный аккаунт? Так как склонировав приватный репозиторий к себе, он, вроде как, таковым перестанет быть?

BaBL ★★★★★
() автор топика

А ещё для массового удаления коммитов можно применить git filter-branch.

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