Домівка > Git > Різний дріб’язок потрібний у роботі з github

Різний дріб’язок потрібний у роботі з github

У цьому пості я буду описувати різноманітні проблеми, з якими я неодноразово стикався у декількох своїх репозиторіях на github. Просто для того, щоб не шукати це все знов кожного наступного разу.

Локальне ім’я і поштова адреса

Іноді доводиться працювати з власним/домашнім репозиторієм з робочого компа, тоді варто встановити ім’я і поштову адресу користувача локально в репозиторії. Робиться це так:

git config --local user.email no@no.no
git config --local user.name Harmyder

Символ для коментарів

Іноді закомітивши зміни помічаєш, що забув вказати номер issue до якого цей коміт мав би бути прив’язаним. Оскільки номер десятого issue в повідомленні виглядає так #10, а за промовчанням символ коментаря теє #, то виникає конфліктна ситуація. Отже можна змінити символ для коментаря:

git config --local core.commentchar ";"

Зміна повідомлення не останнього коміта

Номер issue можна забути вказати і в старому коміті, тобто вже маючи кілька комітів після нього. Тоді на бопомогу приходить rebase. Припустимо ми бажаємо змінити повідомлення у передостанньому коміті.

git rebase HEAD~2 -i

У текстовому редакторі бачимо список комітів перед кожним з яких є слово pick, тоді це слово треба замінити на reword у коміта, повідомлення якого ви хочете змінити. Тоді, після виходу з цього редактору відкриється наступний де можна перефразувати повідомлення у вибраного коміта.

Заливати на сервер потрібно командою

git push -f

Видалити останній коміт

git reset --hard HEAD~1
git push -f

Push-request так, щоб не засмічувати історію комітів

Розглянемо звичайний перебіг виконання завдання в декілька комітів і за тим push-request

git checkout -b test_pr
touch test_pr_file
git add test_pr_file
git commit -m "push-request w/o littering commits history"

echo "first line" >> test_pr_file
git add -u
git commit -m "one more commit"

echo "second line" >> test_pr_file
git add -u
git commit -m "yet one more commit"

git push -u origin test_pr

pull-request-several-commits
Тепер через інтерфейс github, робимо поточною гілку test_pr і створюємо новий pull-request.

Тут ми бачимо, що усі три коміти з’являться в основній гілці, але це може бути не тим, що ми хочемо. Якщо ми бажаємо зменшити число таких комітів, то нам потрібно використовувати:

git commit --amend
git push -f

Звісно, git не настільки просунута система рев’ю як-от gerrit, тому у багатьох комітів є свої переваги.

Як виправити випадковий git pull

Уявімо ситуацію коли ви зробили git commit --amend і робите git push, а воно не заливається, бо ви забули -f. І ви необачно зробили git pull, маєте купу конфліктів. Тут допоможе

yola:~/i2a$ git reflog
dff5a79 HEAD@{0}: commit (amend): #26 VC++ проект, щоб створити xml
da354e1 HEAD@{1}: commit (amend): #26 VC++ проект, щоб створити xml
0246aa0 HEAD@{2}: pull: Fast-forward
2660bb7 HEAD@{3}: reset: moving to HEAD~2
...

Тут допоможе, але будьте обережні з –hard

git reset --hard HEAD@{0}

Продовження буде…

Advertisements
Категорії:Git Позначки:
  1. Коментарів ще немає.
  1. No trackbacks yet.

Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: