Перейти к содержимому

Bitbucket как удалить коммит через интерфейс

  • автор:

Как удалить коммит из репозитория в Atlassian Bitbucket

В этой статье я расскажу, как удалить коммит из репозитория в Bitbucket.

А зачем вообще удалять коммит?

Может так случиться, что Вы случайно запушите конфиденциальную информацию в репозиторий Bitbucket.

Например, Вы отделили Ваш код от паролей, создав файл настроек, но забыли включить этот файл в .gitignore, в результате после того, как Вы закоммитили изменения и запушили в Bitbucket, файл с паролями виден всем, у кого есть доступ к репозиторию. Или же Вы что-то тестили и написали пароль прямо в исходном файле, Вы, конечно, хотели потом его удалить, но забыли. Вы закоммитили, запушили и Ваш пароль опять виден всем.

Хорошо, он виден всем. Нужно как-то откатить эти изменения. Но как?

Вы можете удалить репозиторий и создать новый. Но в этом случае нужно будет настроить новый репозиторий, как старый, сказать коллегам, что Вы создали новый репозиторий. Это как-то слишком сложно.

Более простой способ это удалить коммит с паролем

В этой статье я покажу, как это сделать.

Создадим репозиторий в Bitbucket

Сначала создадим репозиторий в Bitbucket:

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

Я создам новую папку для репозитория:

mkdir bitbucket-tutorial cd bitbucket-tutorial/

Теперь инициализирую репозиторий и добавлю ссылку на мой Bitbucket репозиторий:

git init git remote add origin https://alex1mmm@bitbucket.org/alex1mmm/bitbucket-repo-article.git

Создам новый файл и добавлю содержимое:

touch mynewfile.txt

Вот содержимое файла mynewfile.txt:

this line is initial commit

Я закоммичу изменения и запушу в Bitbucket:

git add * git commit -m "initial" git push origin master

Внесу измененияи в mynewfile.txt с паролем:

this line is initial commit I added my password info here

Опять закоммичу изменения и запушу в Bitbucket:

git add * git commit -m "sensitive info" git push origin master

Теперь у меня в Bitbucket два коммита:

И коммит с конфиденциальной информацией содержит мой пароль:

Даже если я сейчас быстро уберу из файла mynewfile.txt мой пароль, закоммичу изменения и запушу в Bitbucket, то я все-равно буду видеть мой коммит с конфиденциальной информацией, а значит и мой пароль. Поэтому нам нужно удалить коммит.

Удалим коммит с паролем

Давайте сначала найдем идентификатор нашего коммита:

git log --oneline --graph --decorate

Вот вывод этой команды:

Я пометил идентификатор коммита с паролем красный прямоугольником.

Этот коммит нам и нужно удалить. Но для того, чтобы его удалить, нам понадобится идентификатор предыдущего коммита. Вот он:

Теперь удаляем наш коммит вот такой коммандой. В команде мы указываем идентификатор предыдущего коммента:

git reset --hard 3e90065

Теперь файл mytextfile.txt выглядит вот так:

this line is initial commit

Правильно! Информации о пароле нет.

История коммитов выглядит вот так:

У нас нет коммита с паролем. Опять верно!

Но если мы посмотрим в Bitbucket, то коммит все еще будет там:

Правильно. Мы не запушили изменения. Давайте запушим:

git push --force origin master

И теперь если мы посмотрим в Bitbucket, то увидим только один коммит:

Отлично! Больше никто не видит наш пароль.

Удалить коммит bitbucket

Сделал дураций коммит, и удалил 2 языковых файла. И всюду уже затянул git pull. Можно как-то через сайт bitbucket.org удалить этот коммит из истории, чтобы репозиторий стал без этого коммита? И что дает «Stop watching» в коммите?

Отслеживать
Михаил Соснин
задан 26 окт 2016 в 9:28
Михаил Соснин Михаил Соснин
224 2 2 серебряных знака 13 13 бронзовых знаков

можно, но не нужно. В целом, есть такая чудная таблица i.stack.imgur.com/nxqyU.png где рассказано, что делать.

26 окт 2016 в 9:30

@KoVadim Почему не нужно? Я так понимаю через сам сайт bitbucket никак, надо через терминал get revert 2d83a76 (это номер id коммита — он не последний)

26 окт 2016 в 9:50
revert — это хороший вариант.
26 окт 2016 в 9:53
Просто удалить коммит в середине истории нельзя. Можно только сделать rebase.
26 окт 2016 в 10:06
Нужно не забыть форсированно запушить. git push —force
26 окт 2016 в 10:33

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • git
  • bitbucket
  • git-commit
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как отменить коммит через веб-интерфейс?

Увы, но никак.
Если неприязнь командной строки, можно воспользоваться графическими оболочками. Хоть от того же GitHub.

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

github

  • GitHub

Как клонировать приватный проект с GitHub на свой VPS?

  • 1 подписчик
  • 28 дек. 2023
  • 118 просмотров

Как в bitbucket отменить нескольких коммитов?

Всем доброго дня!
Немного страшновато, хотя в целом все понятно, хочу откатить все правки до определенного коммита.
Подскажите, пожалуйста, как это безопаснее всего сделать?
Я точно знаю хеш коммита, то есть это не неопреденные отмены, а четко понятные.

Заранее спасибо за ответы.

  • Вопрос задан более двух лет назад
  • 1233 просмотра

Комментировать
Решения вопроса 1
Saboteur @saboteur_kiev Куратор тега Git
software engineer

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

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

Ответ написан более двух лет назад
Нравится 1 7 комментариев

vabka

а как же git push -f?
Saboteur @saboteur_kiev Куратор тега Git
а если ктото уже запуллил, как всех посинкать?
Денис Загаевский @zagayevskiy
Saboteur, когда будут в следующий раз пуллить, узнают об этом. Ну и задумаются о запрете форспуша

vabka

Saboteur, ну в принципе если ветка личная — почему бы и нет. Если мастер — тогда да

KayzerSoze

Алексей Типа @KayzerSoze Автор вопроса

Спасибо за ваши ответы.
В итоге, я создал новую ветку, откатил коммиты до нужного.
Осталось только «вмержить в мастер».
Только я раньше никогда не делал этого.
Работал с одной веткой только, чисто для себя.

KayzerSoze

Алексей Типа @KayzerSoze Автор вопроса

Знаете, что интересного произошло?
После мержа в мастер, я запулил файла на хостинг, и мне гит написал, мол все в порядке.

А по итогу, старые файлы остались на хосте.
Мне пришлось удалить полностью все на хосте, инитнуть гит, и только после пула все получилось.

Вопрос: почему после мержа и пула, файлы на хостинге не обновились? Вероятно, я что-то сделал не так..

Saboteur @saboteur_kiev Куратор тега Git

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *