Как стать автором
Обновить
13.6

Git *

Система управления версиями файлов

Сначала показывать
Порог рейтинга
Уровень сложности

Странный глюк Git, чуть не стоивший 10 часов работы

Время на прочтение2 мин
Количество просмотров57K
Я провел весь вчерашний день, напряженно работая, чтобы закрыть долгую и порядком надоевшую задачу. Было достаточно поздно, когда я закомитил изменения и отправил на пуш. Гит привычно ругнулся что не может, потому что есть свежие правки. Окей, pull, push. Теперь вроде нормально, можно идти спать.

Проверю на тестовом сервере и потом пошлю ссылку коллегами, решил я напоследок. Тестовый показывал версию по состоянию на вчера. Странно, еще раз проверил, что правки ушли, в репозитории свежих изменений нет. По-быстрому проконсультировался с коллегой на предмет глюков тестового и решили отложить поиск проблемы на завтра.

На следующий день я еще раз сделал деплой на тестовый сервер, но он упорно показывал старую версию. Решил свериться с логом Гита… мой коммит… ЕГО ПРОСТО НЕ БЫЛО! Его не было нигде, ни в локальной копии, ни в удаленной. Его не было даже в исходниках на диске. Файлы, оставленные открытыми в редакторе, были пусты. Единственный фактом, связывающим меня в тот момент с реальностью, был скомпилированный js-файл проекта, оставшийся после сборки исходников. Он работал именно так, как я оставил его вчера.
Читать дальше →
Всего голосов 80: ↑61 и ↓19+42
Комментарии94

Как привлечь в свой проект мировых звезд программирования или интересная особенность GitHub

Время на прочтение1 мин
Количество просмотров5.3K
Относительно недавно мне пришлось использовать систему Git немного сложнее банального клика в Android Studio на кнопку сommit. Сегодня, по собственной неосмотрительности, нашел интересную особенность Git GUI: если в настройках клиента вписать e-mail любого пользователя GitHub, но при пуше (push) коммита (commit) указать свои данные, то заглянув на сайт в раздел коммитов можно увидеть нечто странное. Коммит будет выполнен не от лица вас, а от имени человека, который вписан в настройках Git GUI. Нагляднее это будет увидеть в приложенном видео с пошаговыми действиями:



Не долго думая, решил обратиться к более опытному коллеге за разъяснениями. После десяти минут проб с перебором e-mail было принято совместное решение написать в тех. поддержку, но ответ от GitHub удивил не меньше:

Hi,

Because git is a distributed version controls system GitHub must use the commit email address to assign attribution. When you push a repository to GitHub.com it may contains one or more commits, some of which you may not have authored. For example, imagine a scenario where you collaborated with a number of people on a git repository before you made your first push of that repo to GitHub.com. This push would contain a number of commits from several authors. It would be incorrect to assign all of the commits to the person doing the push, so we use the commit log email addresses to assign attribution on GitHub.com. Each subsequent push to GitHub uses this same logic to assign attribution of commit authors.

Thanks!
Patrick


Выходит, GitHub не считает багом то, что фактически любой может делать коммиты от лица другого разработчика. Ну что же, теперь мне будут помогать фиксить баги лучшие программисты мира.
Всего голосов 33: ↑13 и ↓20-7
Комментарии10

Установка GitLab на Slackware

Время на прочтение9 мин
Количество просмотров11K

Доброго времени суток. У меня есть маленький подручный сервер, который используется как git сервер для показа клиенту проекта и т.д. Сервер работает на операционной системе Slackware v.13.1.0, семейства linux. Почему не Debian или Ubuntu — так исторически сложилось. Для просмотра git репозиториев я использовал cgit. Недавно возникла необходимость начать использовать GitLab. Если интересно — добро пожаловать под кат.
Подробнее
Всего голосов 9: ↑6 и ↓3+3
Комментарии10

Опрос по системам контроля версий

Время на прочтение1 мин
Количество просмотров47K
Какие системы контроля версий Вы используете (для собственных проектов и для работы)?
Всего голосов 80: ↑57 и ↓23+34
Комментарии166

Истории

6 мифов, мешающих разработчикам использовать Git

Время на прочтение6 мин
Количество просмотров80K


Сейчас вы с трудом найдете профессионального разработчика, который не пользуется системой контроля версий (VCS) такой, как Git.
Но есть и не мало тех среди нас, кто не использует VCS по причине предвзятого мнения о системах контроля версий.
Ниже несколько мифов и отговорок, которые препятствуют внедрению в рабочий процесс разработчика Git (или любой другой VCS).
Читать дальше →
Всего голосов 103: ↑74 и ↓29+45
Комментарии228

Git 2.0.0

Время на прочтение1 мин
Количество просмотров57K


Состоялся долгожданный релиз, содержащий достаточно много обновлений, нововведений и багфиксов.

Одним из самых главных изменений является поведение команды git push. Теперь по умолчанию (если не указана ветка) push будет осуществлен только в текущую ветку. Git 1.* по умолчанию делал push во все ветки, которые были изменены локально. Конечно же можно вернуться к прежнему поведению, для этого служит опция push.default.

Поведение Git 1.*:
git config --global push.default matching

Новое поведение по умолчанию в Git 2.0:
git config --global push.default simple

Другие изменения:
Читать дальше →
Всего голосов 123: ↑116 и ↓7+109
Комментарии20

Почему мы для code review выбрали Bitbucket, а не GitHub

Время на прочтение2 мин
Количество просмотров69K


В нашей небольшой компании (6 backend + 4 frontend разработчика) для code review (далее CR) мы использовали Gerrit. Gerrit используется, например, для разработки Android. Это инструмент, дающий очень много свободы в настройке процесса CR, но мы от него отказались. Почему? Он прекрасен для суровых backend парней, который легко делают interactive rebase, merge, resolve conflict, amend commit и т.д. Люди из frontend команды по ночам плачут в подушку от тягот рабочего процесса в Gerrit.

В попытке организовывать наш рабочий процесс так, чтобы все были счастливы, мы выбирали одно из популярных решений, которое бы подходило всем. Другими словами, решение не должно содержать критических недостатков для всех разработчиков.

Мы пришли к Bitbucket. Под катом ответы на вопросы почему Bitbucket и почему не GitHub.
Читать дальше →
Всего голосов 85: ↑73 и ↓12+61
Комментарии65

Git: за пределами возможного

Время на прочтение8 мин
Количество просмотров25K

Глава 1



Все началось с того, что мне подарили PipBoy. Очень удобная вещь: захотелось пиццы — набрал команду callPizza() и вот уже курьер везёт тебе горячий круг! «Как здорово!» — думал я.
Недавно я устроился на работу в должности программиста. Коллеги мне сразу стали расхваливать систему контроля версий Git. Ну что ж. Раз говорят, что хороший — нужно читать про него. Прочитав первую книгу, в голове был полный сумбур. Я решительно ничего не понимал. «Что за бабуйня такая? Для чего вообще это нужно?» — показалось мне.
После тяжёлого трудового дня я направился домой. Был тёплый августовский вечер, во дворе играли детишки. У каждого из них на руке был свой PipBoy. Насколько же проникли технологии в нашу жизнь. Ведь совсем недавно ничего этого не было, а первые образцы стоили сотни тысяч долларов. А вот теперь почти у каждого на руке! Погрузившись в свои мысли, я вовсе не заметил, как из-за угла кто-то выехал на мотоцикле. Мчавшись на огромной скорости, он совершенно не замечал людей на дороге. А тем более во дворе.
Продолжение?
Всего голосов 143: ↑103 и ↓40+63
Комментарии20

Gitchain: смесь Гитхаба с Биткоином

Время на прочтение1 мин
Количество просмотров12K
Канадский программист Юрий Рашковский решил объединить две популярные технологии — систему контроля версий Git и распределённую БД Биткоин. Его проект Gitchain, который недавно успешно собрал на Кикстартере запланированные 10 000 долларов, по задумке автора позволит сделать систему контроля версий Git по-настоящему распределённой. С ростом популярности крупных публичных репозиториев, таких как Гитхаб, система Git, которая изначально задумывалась как распределённая, фактически используется централизованно и полностью зависит от сторонних серверов.
Читать дальше →
Всего голосов 53: ↑40 и ↓13+27
Комментарии18

Синхронизация структуры MySQL + Git

Время на прочтение4 мин
Количество просмотров22K
Для синхронизации файлов проекта, ведения истории мы используем системы контроля версий, например, Git. Однако, когда у меня встал вопрос о контроле версий структуры базы MySQL — удовлетворяющего решения найти не удалось.
Замечу, во многих фреймворках и ORM существуют необходимые механизмы «из коробки» — миграции, версионность и т.д. А вот для нативной работы с MySQL — приходится все делать ручками. И пришла идея попытаться создать автоматическую систему для отслеживания изменений.
Читать дальше →
Всего голосов 20: ↑11 и ↓9+2
Комментарии16

Использование перехватчиков (hooks) в Git для блокирования правки опубликованных коммитов

Время на прочтение3 мин
Количество просмотров8.2K
Привет, Хабр!

Тем, кто работает с Git, хорошо знаком способ отредактировать последний коммит командой git commit --amend. Это удобно для мелких правок (изменить комментарий к коммиту, поправить строчку в коде и т.п.), потому что частенько хорошие мысли по поводу коммита приходят в голову уже после того, как этот коммит сделан.

Но с данным способом правки коммитов следует быть осторожным в случае, когда вы работаете с удалённым репозиторием и ещё более осторожным, когда вы работаете над исходным кодом в составе команды. Область безопасного использования опции --amend заканчивается там, где начинается область использования команды git push.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии14

GitHub Cheat Sheet

Время на прочтение2 мин
Количество просмотров19K
Привет, Хабр! В очередной раз на глаза попался очень интересный репозиторий. Эта шпаргалка по самым тайным и функциональным возможностям Git и GitHub появилась благодаря выступлениям Зака Холмана одну из статей которого я уже переводил Git and GitHub Secrets на Aloha Ruby Conference 2012 и More Git and GitHub Secrets на WDCNZ 2013. Стоит сказать о том, что проект набрал свыше 1000 старов менее чем за 12 часов. Приведу несколько примеров:

Hub — Git Wrapper


Hub — это оболочка над Git, которая сокращает потраченное время на лишнее нажатии клавиш при работе с Git.
$ hub clone tiimgreen/toc
> git clone https://github.com/tiimgreen/toc.git

На hub можно сделать алиас git и все будет выглядеть еще удобнее:
# Remote
$ git remote add rtomayko
> git remote add rtomayko git://github.com/rtomayko/CURRENT_REPO.git

#Fetch
$ git fetch mislav
> git remote add mislav git://github.com/mislav/REPO.git

#Fork
$ git fork
[ repo forked on GitHub ]
> git remote add -f YOUR_USER git@github.com:YOUR_USER/CURRENT_REPO.git


Читать дальше →
Всего голосов 46: ↑43 и ↓3+40
Комментарии8

Дружим Git с Putty

Время на прочтение2 мин
Количество просмотров51K
Disclaimer
Предварительно делал поиск по хабру с надеждой на подобный пост, смог найти только вот этот пост, в котором вся работа производятся через TortoiseGit.

Но это не наш метод. По той причине, что в этом случае все наши IDE не смогут сами сделать Push на сервер. Да и через Git Bash ничего не получится сделать на сервере.
почему мне нужно использовать Git в связке с Putty?
Так уж получилось, что я активно использую Putty с настроенными ключами для доступа к серверам. Ключей у меня не один. Git-репозитариев тоже не один.
Конечно же, можно нагенерить OpenSSH ключей для Git-а и разрулить их через ~/.ssh/config, но это получается двойная работа – поддержка ключей в Putty и отдельная поддержка для Git.



Итак, представим, что у нас девственно чистая система, в которой нет ни Putty, ни msysgit. Приступим к настройке нашего рабочего окружения.

Установка Putty


Качаем, устанавливаем, генерим и настраиваем ключ c Pagent (инструкция, ?).

Добавляем ключ на git-сервер


Копируем публичный OpenSSH ключ из Putty-ключа
Запускаем Putty key Generator
Открываем (кнопка «Load») наш PPK-ключ
Копируем весь текст из блока «Key»

Открываем страницу с SSH ключами и добавляем из буфера наш ключ
В картинках (на примере GitHub)






Создаём и сохраняем в Putty профиль «git@github.com» и проверяем, что удаётся зайти по ключу – должна открыться и сразу закрыться консоль.
В картинках





Устанавливаем и настраиваем msysgit

Дайте весь текст!
Всего голосов 39: ↑27 и ↓12+15
Комментарии23

Ближайшие события

Github Education — образование и Github

Время на прочтение2 мин
Количество просмотров24K
image

На хабре есть пост habrahabr.ru/post/195054 «Как бесплатно получить Micro аккаунт на GitHub студенту в России» от 24 сентября 2013 года и больше никаких упоминаний об этой интересной программе от Github'а.
А тем временем, 10 февраля 2014 года Github запустил отдельный сайт education.github.com и сообщили в своем блоге, что они уже много лет предлагают образовательные скидки и более чем 1200 учебных классов и 7000 студентов воспользовались этим предложением на данный момент.
Теперь же они эту программу запустили официально, сделали отдельный сайт и предложили следующее:
  • Бесплатную Micro подписку для студентов и преподавателей
  • Бесплатные Github-организации для использования в классах
  • 25% скидка во всех остальных случаях для использования в учебных целях

Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии19

Git и Visual Studio: как правильно приготовить

Время на прочтение3 мин
Количество просмотров158K
Некоторое время назад мы анонсировали поддержку Git в Visual Studio и TFS. Для того, чтобы научиться правильно готовить все это, я сам прошел весь путь и хочу рассказать вам о нем. Ниже — о том, как использовать Git в VS.
Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии50

Превращаем скучные логи Git'a в захватывающую анимацию

Время на прочтение3 мин
Количество просмотров38K


Каждый, кто посвятил себя работе с компьютерами, хоть раз, но сталкивался с распространёнными высказываниями вроде: «Помоги мне сделать %work%, ты ведь всё равно без дела за компом сидишь». Особенно часто в эту ситуацию попадаёшь, когда работаешь непосредственно в окружении коллег проделывающих ручную работу. Для этих людей ты зачастую представляешься воплощением безделия и главным пользователем youtube.
Сейчас я покажу вам один из приёмов, как превратиться в глазах сотрудников из лодыря в волшебника.
стать волшебником
Всего голосов 79: ↑46 и ↓33+13
Комментарии33

GitHub запустил Developer Program

Время на прочтение1 мин
Количество просмотров8.6K
GitHub сегодня анонсировал запуск GitHub Developer Program, предназначенной для лучшего информирования разработчиков о происходящих изменения и коллективной работы над улучшением сервиса.



Члены GitHub Developer Program будут получать уведомления об изменениях в GitHub API, а также самый ранний доступ к новым функциям. У участников программы кроме того будет возможность запросить лицензию разработчика для GitHub Enterprise и размещать свои инструменты для рассмотрения на новой странице интеграции, также запущенной сегодня.
Всего голосов 35: ↑31 и ↓4+27
Комментарии1

GIT — Использование mcdiff в качестве внешней DIFF-утилиты

Время на прочтение2 мин
Количество просмотров11K

mcdiff


В составе Midnight Commander, помимо всем известного редактора mcedit, есть не менее замечательная утилита для сравнения файлов «бок о бок» (side-by-side) — mcdiff. В ней можно сравнивать и при необходимости производить полное или частичное слияние в обе стороны.



Историю появления утилиты mcdif когда-то уже рассказывал тут но ближе к делу…

хочу узнать как подключить mcdiff к git
Всего голосов 35: ↑31 и ↓4+27
Комментарии28

Установка Atlassian STASH, грабли при установке в CentOS

Время на прочтение4 мин
Количество просмотров13K

Введение



В связи с тем, что не многие, как оказалось, знают про Stash немного о нём. На сайте производителя даётся такое описание:
Интерфейс Stash позволяет с легкостью выполнять задачи по администрированию и управлению. Stash хранит ваши растущие Git репозитории в безопасности в пределах зоны действия файервола. Добавляйте пользователей и группы пользователей, устанавливайте детализированный правила прямо из UI (пользовательского интерфейса). Создавайте и управляйте репозиториями в рамках Stash. Быть в курсе всех командных дел и вывести их в единый список – дело всего пары минут.


Грубо говорят Stash от Atlassian — это ваш локальный ГитХАБ. Особая прелесть этого инструмента заключается в том, что он очень тесно интегрирован с той же JIRA от Atlassian, что обеспечивает гораздо более удобную ревизию кода по выполняемой задаче и единый интерфейс для этого.

Установка

Установка указанного продукта достаточно проста. Но я всё таки нашёл для себя грабли.
Отчасти это было связано с тем, что ставил я на CentOS. С этим дистрибутивом я до недавнего времени опыта почти не имел.

Фактически данная статья это вольный перевод Getting Started руководства с сайта Atlassian в разделе установки в Linux.

Пригодится начинающим.
Интересующихся прошу подкат
Всего голосов 12: ↑6 и ↓60
Комментарии4

Представляем аналитику посещаемости Гитхаба

Время на прочтение1 мин
Количество просмотров11K
Выходные окончились, и к нам возвращается прежний настрой на внедрение новых функций Гитхаба. Исходя из желания зрелищно начать 2014 год, сегодня мы с удовольствием запускаем аналитику посещаемости!

Теперь вы сможете видеть подробные проанализированные сведения о посещениях тех репозиториев, которыми владеете или в которых можете напрямую помещать код (push). Просто зайдите на страницу графиков конкретного репозитория — и увидите новую ссылку, ведущую на страницу «Traffic».

[Traffic]

Зайдя на страницу посещений, вы увидите множество полезных сведений о своих репозиториях, в том числе о том, откуда приходят читатели, что они просматривают.

[траффик GitHub]
Глядеть на эти цифры о собственных наших репозиториях было забавно, иногда удивительно, всегда интересно. Надеемся, что и вам это понравится не меньше, чем нам!
Всего голосов 51: ↑47 и ↓4+43
Комментарии6

Вклад авторов