17. Проекти. Git, част 2

17. Проекти. Git, част 2

17. Проекти. Git, част 2

12 декември 2016

Днес

Следващи лекции

Коледна лекция на по бира

Проект

Проекти

Примерни проекти

Персонални тема за проект

Какво очакваме да ни изпратите?

или, как да напишете спецификация

Лоши примери (1)

Лоши примери (2)

Лоши примери

(Не)подходящи теми

или, къде Ruby е силен и къде - не

(Не)подходящи теми

изключения

Поне два интерфейса

Обобщение

Въпроси?

Ще продължим с още малко слайдове за Git.

Припомняне

области

Припомняне

състояния на файл

Премахване на промени на файл

git checkout Gemfile
git checkout .

Commit съобщения

Commit съобщения

Най-важното нещо във всяка VCS

Commit съобщения

Лош пример

Update Gemfile.lock

Commit съобщения

Добър пример

Update skeptic and libv8

The skeptic update showed errors in edge cases with the "spaces around
operators" restriction.

The libv8 update was because of compile problems I had with the older
version on OS X Yosemite.

Branch-ове (клони, разклонения)

Branch-ове

Branch-ове

Особености

Създаване на branch

git branch killer-feature
git checkout -b killer-feature

Превключване между branch-ове

git checkout killer-feature
git checkout master

Създаване на branch

Демонстрация

git branch

Обновяване

git pull
git pull origin
git pull origin master

Публикуване

git push
git push origin killer-feature
git push origin local-branch-name:killer-feature # Ако са с различни имена

Сливане на разклонения

git merge killer-feature
git merge --squash killer-feature

Сливане

стратегии

Различни стратегии на сливане. Основните са:

Fast-Forward стратегия

Просто премества указателя за клона

Fast-Forward стратегия

Просто премества указателя за клона

Recursive стратегия

Слива 2 разделили се клона с обща история.

Recursive стратегия

Жълтото e merge commit-a. Той съдържа промените и от двата клона.

Обновяване 2

git pull
git fetch && git merge origin/master

Изтриване на branch

git branch -d killer-feature
git push origin --delete killer-feature # Ако сте го push-нали
git push origin :killer-feature         # Еквивалентно на горното

Изтриване на branch

Въпроси?

Ще продължим с по-advanced неща.

Машината на времето

git revert <commit>

Машината на времето

git reflog

Игнориране на файлове

.gitignore

Игнориране на файлове

Формат на .gitignore

/bin            # Файлът/директорията bin в главната директория на проекта
bin             # Всички файлове и директории с име bin
bin/            # Всички директории с име bin
compiled/*.html # Всички файлове с разширение html в директория compiled
lib/**/*.txt    # Всички текстови файлове в lib или нейна поддиректория
*.exe           # Всички изпълними файлове за Windows 

git rebase

Най-мощният инструмент за пренаписване на историята

git checkout killer-feature
git rebase master
git rebase -i
git rebase -i master
git rebase -i HEAD~4
git pull --rebase

git rebase

git blame

"Кой написа това?"

git blame lectures/index.yml

Акценти

Защо git по този начин?

Изводи

Искайте помощ

Графичен интерфейс

GitX

Графичен интерфейс

TortoiseGit

Графичен интерфейс

GitHub

Графичен интерфейс

SourceTree

Материали

Въпроси