5 заметок с тегом

git

4 сентября   git   git pull
3 сентября   --delete   git

Как в Git перенести commit из одной ветки в другую?

Укажу ссылку на оригинал статьи Как в Git перенести commit из одной ветки в другую?

У меня возникла такая необходимость, нашел данную статью, где все удобно и подробно расписано.

Рассмотрим ситуацию на примере. Мы находились в master и сделали в него случайно коммит. Тогда чтобы вынести его в отдельную ветку и отправить на merge request нам потребуется выполнить следующие команды:

1). Смотрим историю изменений и запоминаем хэш коммита , соответствующего правильному состоянию ветки master, то есть когда ещё в неё не было добавлено лишних коммитов по ошибке.

git log

2). Также следует запомнить хэш коммита , который был лишним в ветке master. Иногда бывает, что лишними оказываются сразу несколько коммитов, тогда если они расположены последовательно друг за другом следует запомнить самый давний и самый последний .

3). Перейдём на найденный коммит . Другими словами переходим на то состояние ветки master, от которого нам нужно создать новую ветку.

git checkout 

4). Создадим новую ветку, в которую планируется вынести неверно расположенный коммит, и перейдем на неё.

git checkout -b 

5). Переносим коммит в новую ветку.

git cherry-pick 

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

git cherry-pick master

Если же нужно перенести не один, а несколько подряд идущих коммитов от  до , то это делается похожим образом.

git cherry-pick ..

Если же вы хотите, чтобы при переносе изменений коммит не создавался, то используйте параметр -n (—no-commit):

git cherry-pick -n d112ecf96

Как и при операции git rebase в процессе переноса коммита могут возникнуть конфликты. Как и при обычном git merge их следует разрешить, добавить изменения в индекс с помощью git add, а затем продолжить запустив git cherry-pick —continue.

6). Теперь когда коммиты перенесены в ветку , следует удалить их из ветки master. Поэтому переключаемся на ветку master

git checkout master

Смещаем указать master на коммит

git reset --hard 

Спасибо автору за подробную статью

2018   git

Отменить последний коммит в git

Если вы сделали коммит, но по каким-то причинам решили его отменить, а изменения в файлах хотите оставить, то выполните следующую команду в консоли:

git reset --soft HEAD^

Если хотите удалить комит полностью, вместе с изменениями в файлах, то

git reset --hard HEAD^

P.S. эти команды работают, если вы еще не «запушили» коммит на сервер

2017   git   git reset

git push и pull по ssh-ключу на Bitbucket

Если вы разрабатываете локально, изменения в коде храните на Bitbucket, а деплоить необходимо на продакт-сервер, то для начала настроим работу по ssh-ключу. Это и практично и делается легко.

Шаг №1. Начнем с настройки проекта на Битбакете:
Открываем Настройки проекта (а для этого необходимо иметь права Админа)

Выбираем подпункт «Deployment keys». Обратите внимание на надпись «Use deployment keys to gain read-only access to this repository».

Это значит, что данный ключ дает доступ только на чтение репозитория, т.е, фактически на выполнение команды «git pull» со своего локального хоста. Т. е. выполнить git push, т. е. залить свои изменения в репозиторий без пароля, только «по ключу» не получится. Для этого надо будет выполнить Шаг №2.
Но сначала давайте сформируем ключ. Лучше всего сформировать на продакт-сервере (или тестовом). Ведь над проектом могут работать несколько разработчиков.
В консоли линукса введите:

ssh-keygen -t rsa -b 4096

Соответственно, содержимое файла id_my_project.pub необходимо скопировать и внести в качестве нового ключа:

Публичный ключ, можно сохранить у себя в директории «.ssh», я например, сохранил в /home/oleg/.ssh

Шаг №2. Добавим личный публичный ключ в настройки Bitbucket. Открываем:

Нас интересует раздел «SECURITY» => «SSH keys».

Тем же способом, что описан выше, генерируем ключи у себя на локальной машине. Допустим, вы сохранили дефолтный вариант имени файла, потому добавим в Битбакет содержимое файла id_rsa.pub

А теперь сделайте свой git push с локального сервера и git pull на продакт-сервере

2016   bitbucket   git   git push   ssh   ssh-key   ssh-keygen