Предыдущий ролик Следующий ролик  

Видео урок: Отправка изменений в удаленный репозиторий

Git: обучение основам

В последнем ролике мы рассмотрели, как работает отслеживание бранчей. В этом ролике мы это применим, а также отправим несколько изменений в удаленный репозиторий. Обратите внимание, что я внутри директории explore_california в master бранче. Прежде чем мы отправим некоторые изменения, мы сперва должны их сделать. Изменение я хочу внести на странице tours. Открываем tours.html, и вы видите, что здесь есть Backpack Cal, а также есть ссылка, которая отправляет меня на страничку Backpack Cal.

Ссылкой, которая отправит меня на эту страницу, является tour_detail_backpack_cal.html, это формат имени файла. California Calm пока еще не существует, я еще не создал эту страницу. Но обратите внимание, что для перехода на эту страницу должна использоваться ссылка tourDetail_calm.html, я хочу привести все ссылки к одному существующему формату. Несмотря на то, что на самом деле файлов пока еще нет, мы изменим ссылку, так что когда файл будет создан, у нее был бы тот же формат, что и у ссылки для Backpack Cal, чтобы по ней можно было попасть сюда.

Все верно, итак, давайте сделаем это изменение. Открываю tours.html, быстро ищу Detail, также я не игнорирую регистр, и вот оно, первое, Detail_calm. Меняем это на _detail, ищем следующий - меняем на _detail, следующий - _detail, и так все меняем.

Хорошо, я все поменял. Теперь я сохраняю документ и закрываю его, git status, и мы видим здесь изменения. Теперь давайте сразу пропишем git commit и сделаем это с опцией -am, все будет сделано за один шаг, а сообщение пишем такое "Change file/link format on tours.html." Итак, я закоммитил это изменение. А вы знаете, что это локальная операция.

Она точно такая же, что мы делали и ранее и не имеет вообще ничего общего с удаленным хранилищем. Мы просто сделали обычный коммит в нашем основном бранче в локальном репозитории. На данный момент это единственное место, где существует изменение. Итак, git log --oneline, вот это изменение, f3a370e. Напишем git log --oneline origin/master, это удаленный бранч. На самом деле, это моя локальная копия удаленного бранча, вы видите, что ее пока что здесь нет, а вообще, мы можем сравнить эти два бранча, написав git diff master..origin/master, возможно, вам нужно поменять их местами, потому что origin/master стоит за master, а здесь есть изменения. Итак, это все изменения, которые я внес.

Теперь мне нужно отправить эти изменения в удаленный репозиторий. Все верно, помните, что мы отправляем изменения, также как мы отправляем внутренний код, изменения мы отправляем в origin master. Итак, пишем git push origin master, и это та же самая команда, что мы использовали и ранее, чтобы отправить наши изменения, но поскольку это отслеживаемый бранч, вы ведь помните, что мы настроили его быть отслеживаемым, мы просто можем написать git push. Намного короче. git push хочет знает мое имя пользователя, вот оно, и происходит отправление. Git знает, куда отправлять изменения, потому что это отслеживаемый бранч.

И что бы вы ни делали, отправляли или получали данные, Git будет считать, что должен перейти к этому отслеживаемому бранчу. Очень удобно. Не нужно много набирать и думать о том, что делает Git. Вы можете просто написать git push, и Git отправит все изменения на удаленный сервер. Теперь мы видим, что изменение есть и здесь, git log --oneline, а затем пишем origin/master, вот, все на месте. Теперь эти изменения показаны и здесь. А если теперь вы зайдете на GitHub и взглянете сюда, вы увидите, что в master бранче также есть эти коммиты.

По факту, вот последний коммит в основном бранче - "Change file/link format on tours.html", он был создан три минуты назад, и у него есть номер. Если мы нажмем не него, нам будет показана та же самая разница, что мы уже видели. Так что мы видим, в чем заключался коммит. Теперь давайте вернемся в командную строку и переключимся на другой проект, lynda_version. Это выглядит так, как будто мы смотрим на проект в точки зрения Линды, из ее репозитория. Итак, возвращаемся в версию Линды и отсюда пишем git log --oneline, и вы видите, что у Линды еще нет этих изменений.

Они находятся в репозитории explore_california, отсюда эти изменения были отправлены в удаленный репозиторий, поэтому Линда их не видит. И именно поэтому Линда должна извлечь (fetch) данные, чтобы получить все изменения, которые были отправлены на удаленный репозиторий. Давайте посмотрим, как это делается, в следующем ролике.