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

Akoemov_DevCop_GIT

 Akoemov_DevCop_GIT

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