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

Видео урок: Отслеживание удаленного бранча

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

Когда мы говорили о бранчах, мы упоминали то, как один локальный бранч синхронизируется с изменениями, происходящими в другом бранче, и этот процесс называется отслеживанием (tracking). В качестве примера я показал вам, как text_edits может отслеживать основной бранч. Идея здесь заключается в том, что мы хотим, чтобы оба эти бранча были синхронизированы. Таким образом, мы периодически забираем изменения из основного бранча и отправляем их в text_edits. Таким образом, они никогда сильно не расходятся, и даже если случается, что изменения есть, когда мы их вносим в text_edits, мы можем сделать слияние этого бранча с основным бранчем без проблем.

Отслеживание является обычной практикой при работе с удаленными бранчами, и оно работает схожим способом, плюс, если немного повозиться с настройками, мы можем сказать основному бранчу, какой удаленный бранч он должен использовать при извлечении и отправлении данных. Мы не должны это указывать каждый раз. Здесь будет настройка по умолчанию, чтобы он знал, какой бранч отслеживать. Когда мы впервые написали git push, мы добавили еще опцию -u, и тогда я вам сказал, что это касается отслеживания бранчей и что мы поговорим об этом позже. Вот время настало.

Если мы не прописываем git push с опцией -u, Git не отслеживает никакой удаленный бранч. Все, что он делает, это отправляет туда наш код. У него нет никакой информации, что это бранч, с которым мы будем работать в дальнейшем. Опция -u говорит отправить данные прямо сюда, а также сохранить в памяти данный факт, потому что мы сюда вернемся и будем часто работать с этим бранчем. Когда мы делали git clone, чтобы создать lynda_version, Git отслеживал удаленный бранч, и вот здесь, в git/config, мы можем увидеть это отслеживание. Вы видите, что наш бранч master настроен так, чтобы отслеживать refs/heads/master для origin.

Это то, что отслеживает Git. Вот таким образом вы можете узнать, что это отслеживаемый бранч. А теперь давайте переключимся. Возвращаемся в нашу папку explore_california, вы видите, что здесь то же самое. Прописываем cat .git/config, но давайте теперь избежим отслеживания. Сейчас мы не прописываем опцию -u, чтобы увидеть разницу. Создаем бранч от основного бранча, и дальше мы будем его использовать. Пишем git branch, называем этот бранч non_tracking, чтобы было понятно, для чего он нужен.

Мы знаем, как отправить его в origin, пишем push non_tracking. Секунду, тут нужны мои данные, так, все отправлено, снова смотрим на git/config, но вы видите, что здесь нет никакого списка, все верно, бранч был отправлен, но Git говорит нам: "Вы попали в удаленный репозиторий, и я с вами закончил". В дальнейшем не будет никакого соединения между нашим бранчем non_tracking и тем, что происходит на GitHub.

Опция -u помогла создать отслеживаемый бранч. Сейчас я собираюсь оставить это бранч non_tracking, но я хочу, чтобы вы знали, что если когда-нибудь у вас будет бранч, который не отслеживается, а вы хотите, чтобы он отслеживался, тогда у вас есть три варианта. Вы можете просто зайти сюда и добавить его, или же вы можете использовать команду git config. Это команда git config branch, за которой следует имя бранча. В данном случае, это будет non_tracking remote, а затем имя удаленного сервера, origin, затем вы сделаете то же самое для опции слияния refs/heads/master.

Таким образом, вы получите тут же самую конфигурацию в файле .config, или если вы используете Git 1.7, а именно это версия будет у большинства из вас, если только по какой-то причине вы не используете более старую версию, тогда вы прописываете git branch --set-upstream, это то же самое, что и с опцией -u , той -u, которую мы использовали, когда отправляли данные. Это сокращение для set-upstream, а затем мы можем написать non_tracking origin/non-tracking, и это скажет, каким является up-stream сервер.

Эта команда скажет Git, какое удаленное хранилище он должен отслеживать. Но оставлю наш бранч non_tracking неотслеживаемым, то чтобы если бы мы захотели увидеть разницу, мы могли бы зайти сюда и посмотреть.