Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Akoemov_DevCop_GIT

 Akoemov_DevCop_GIT

Avatar for Alexander Akoemov

Alexander Akoemov

May 20, 2016
Tweet

More Decks by Alexander Akoemov

Other Decks in Technology

Transcript

  1. Основные команды March 2016, Spring Core Technologies Talk, Alexander Akoemov

    2 • init • config • clone • add • commit • Remote • log • Branch • Push • Pull • Stash • tag • Checkout • Bisect • Diff • Fetch • Grep • Rebase
  2. Git vs SVN March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 3 1)GIT распределяется, а SVN - нет. Другими словами, если есть несколько разработчиков работающих с репозиторием у каждого на локальной машине будет ПОЛНАЯ копия этого репозитория. Разумеется есть и где-то и центральная машина, с которой можно клонировать репозиторий. Это напоминает SVN. Основной плюс в том, что если вдруг у вас нет доступа к интернету, сохраняется возможность работать с репозиторием. Потом только один раз сделать синхронизацию и все остальные разработчики получат поолную историю. Распределённость! Это не оффлайновая работа, а именно распределённость - скопированный репозитарий представляет полную копию источника, в который можно сливать изменения сделанные в бранчах на локальных машинах.
  3. Git vs SVN March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 4 2) GIT сохраняет метаданные изменений, а SVN целые файлы. Это экономит место и время.
  4. Git vs SVN March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 5 3) Система создания branches, versions и прочее в GIT и SVN отличаются значительно. В GIT проще переключатся с ветки на ветку, делать merge между ними.
  5. Git vs SVN March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 6 4) Git может делать тоже что и SVN, при этом дает больше возможностей.
  6. Git vs SVN March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 7 5) Большинство операций (update, commit, diff, history) IDEA делает совершенно одинаково для git и svn.
  7. Git команды March 2016, Spring Core Technologies Talk, Alexander Akoemov

    8 Далее разберем несколько кейсов и команд с их ключами..
  8. git clone March 2016, Spring Core Technologies Talk, Alexander Akoemov

    9 $ git clone ssh://user@somehost:port/~user/repository $ git clone git://user@somehost:port/~user/repository/project.git $ git clone http://user@somehost:port/~user/repository/project.git $ git clone file:///home/username/project myrepo # Этот вариант отличается от того, что начинается с file:// # Он работает быстрее, но утягивает заметно больше информации. $ git clone /home/username/project myrepo
  9. git config March 2016, Spring Core Technologies Talk, Alexander Akoemov

    10 Редактировать конфиг в редакторе по умолчанию. Если не задан параметр --global, то редактируется .git/config, иначе ~/.gitconfig $ git config -e [--global]
  10. git remote add March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 11 Обновить удаленный репозиторий $ git remote add bob /home/bob/myrepo
  11. git rm March 2016, Spring Core Technologies Talk, Alexander Akoemov

    12 Удалить файл из комита и с жесткого диска $ git rm -f file1 file2 ... fileN Удалить из папки документации к git все файлы txt $ git rm Documentation/\*.txt Рекурсивно удалить все файлы в папке "vim/insert mode" $ git rm -rf 'vim/insert mode'
  12. git reset March 2016, Spring Core Technologies Talk, Alexander Akoemov

    13 Отменить все изменения, сделанныe в дереве, до состояния, которое было при последнем commit в локальный репозиторий $ git reset --hard Удалить из индекса конкретный файл $ git reset - EDITEDFILE Навсегда удалить три последних коммита $ git reset --hard HEAD~3
  13. git revert March 2016, Spring Core Technologies Talk, Alexander Akoemov

    14 Отменить коммит $ git revert config-modify-tag $ git revert cgsjd2h
  14. git show March 2016, Spring Core Technologies Talk, Alexander Akoemov

    15 Просмотреть содержимое определённого коммита $ git show d028769 commit d028769abbdcfa3e6cdba76cb1d6b569e5afe88e Показать файл, как он выглядел коммит назад $ git show HEAD^:view/prj/one_example.php
  15. git merge March 2016, Spring Core Technologies Talk, Alexander Akoemov

    16 Попробовать объединить текущую ветку с веткой new_feature $ git merge new_feature
  16. git shortlog March 2016, Spring Core Technologies Talk, Alexander Akoemov

    17 Посмотреть статистику коммитов по автору $ git shortlog -s -n 118 Aleksei Kaminin 3 Alesenko Elena 3 Lena Omega 3 unknown
  17. git cherry-pick March 2016, Spring Core Technologies Talk, Alexander Akoemov

    18 $ git cherry-pick 7496f529 Взять правки из коммита 7496f529, применить их к текущей ветке, но сам коммит не совершать
  18. git commit March 2016, Spring Core Technologies Talk, Alexander Akoemov

    19 Изменить сообщение в предыдущем коммите $ git commit --amend Добавить изменения к предыдущему коммиту $ git commit --amend -a
  19. git add March 2016, Spring Core Technologies Talk, Alexander Akoemov

    20 $ git add –p Для каждой сделанной правки без коммита показать измененный участок кода и спросить, должно ли это изменение попасть в следующий коммит.
  20. Sources and Resources March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 21 Обучение: http://learngitbranching.js.org/ https://try.github.io Git Book https://git-scm.com/book/ru
  21. Questions are welcome! March 2016, Spring Core Technologies Talk, Alexander

    Akoemov 22 Alexander Akoemov email: [email protected] Linkedin: www.linkedin.com/in/akoemov GitHub: github.com/akoemov Skype: akoemov