Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Шпаргалка по GIT

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#1
Уже давненько пользуюсь ГИТом, но некоторые команды используются крайне редко и каждый раз приходится вспоминать как то или иное действие сделать правильно. По-этому и решил сделать нечто вроде шпаргалки + может еще кому-то поможет.

Клонирование репозитория
Обычно, если мы находимся в папке http, и выполним команду
Code:
git clone https://github.com/Name/try_git.git
то репозиторий скопируется в папку http/try_git, что не всегда удобно, ведь обычно мы хотим склонировать репозиторий именно в ту папку в которой находимся. Для этого надо просто добавить точку в конце команды
Code:
git clone https://github.com/Name/try_git.git .

Алиасы и шорткаты для GIT
Файл gitconfig (обычно в папке .git)
Code:
[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p

Как видите мы добавили в наш конфиг секцию alias и задали в ней список коротких команд. Например вместо checkout мы теперь можем писать co.


Коммит и отмена изменений

Для того, чтобы закоммитить изменения на сервер надо сделать несколько шагов
Code:
# Добавить нужные файлы в индекс
git add .
# Сделать коммит (в гите это локально)
git commit -m 'Test commit'
# Отправить это все на сервер (в скобках не обязательные параметры)
git push [origin master]

Если же нам надо забрать изменения с сервера
Code:
git pull

Отменить коммит(fdd46458a9 - хэш коммита)
Code:
git revert fdd46458a9

Перенести только один коммит из одной ветки в другую
Code:
git cherry-pick BUG_FIX_TAG
Эта команда перенесет коммит и сразу сделает новый коммит с этими изменениями
Code:
git cherry-pick BUG_FIX_TAG -n
А тут ключ -n указывает что изменения надо лишь перенести, но не делать нового коммита


Еще один вариант отмены изменений
Если мы отменим коммит командой revert, то из истории коммитов он не пропадет, а добавиться еще один коммит (Revert: commit_name).
Code:
git revert fdd46458a9
# Не смотря на то что мы откатили коммит, в истории он остался
git hist

Если же нам необходимо удалить коммит и из истории тоже, мы можем сделать так
Code:
# В отличии от revert тут мы указываем хэш не того коммита, который хотим отменить, а того, к которому откатываемся
git reset --hard fdd46458a9
# Так мы не увидим в истории сброшенные коммиты
git hist
# Тем не менее так они все равно видны
git hist --all

Отмена изменений в конкретном файле
Допустим вы изменили какой-то файл и еще не коммитили его, но уже поняли что вам надо отменить изменения. В таком случае можно выполнить следующую команду.
Code:
git checkout -- <file>



Ветки

Часто бывает нужно создать ветку(например для версии CMS)
Code:
git checkout -b new_branch

Флаг -b указывает, что сразу после создание ветки мы переключимся на нее. Эта команда эквивалентна
Code:
git branch new_branch
git checkout new_branch



Буду только рад, если другие укажут на мои возможные ошибки

Отредактировано автором 27 Мар 2014
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

boriska

  • Атом-мозг
  • Пользователь
  • 846
  • Репутация:65 
  • Предупреждения: 0 
  • Регистрация:
    29 Янв 2013
#2
Eсть такая прога от Atlassian называется SourseTree  (тут можно скачать и почитать о ней)
В общем знание английского чуть чуть и можно не вспоминать о командах git. Лично я всегда с ней.

Соразработчик Atom-M CMS

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#3
Еще актуальный вопрос как правильно принимать изменения, чтобы не потерять ни свои, ни чужие?

Я так понимаю, сперва коммитим свои, за тем pull и за тем push. Но не уверен.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

boriska

  • Атом-мозг
  • Пользователь
  • 846
  • Репутация:65 
  • Предупреждения: 0 
  • Регистрация:
    29 Янв 2013
#4
а как написать команду git push сразу учитывая пароль, который эта команда потребует?(тоесть вводить пароль сразу в команде)

Соразработчик Atom-M CMS

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#5
Ой я даже хз, как то не задавался вопросом.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

ksen-pol

  • Джуниор
  • Юзер
  • 2
  • Репутация:0 
  • Предупреждения: 0 
  • Регистрация:
    5 Фев 2015
#6
Работаю с git.
Пробую делать откат до комита, но не получается.
Создаю репозиторий. Вношу изменения на локальном сервере,пишу git add. потом git commit
Вношу изменения специально, чтобы потом их убрать (втестовом режиме).
Пытаюсь сделать откат,
пишу по-разному:
git reset--hard HEAD
git reset--hard <commit>
Откат неделается
synthaxiserrow unexpected token near 'newline'
После git reset--hard
вроде сделался откат
пишет
head now at... (то, что было в коменте моего предыдущего коммита)
захожу через браузер на сайт, отката нет (ни в базе ни вфайлах сайта)
денвер перезапускаю на всякий случай, без результата
что не так?
может его еще вытянуть как-то надо?

1
Сейчас online: 47. Зарегистрированных: 1. Гостей: 46.