Если с Mercurial я более менее привык работать, то вынужденные встречи по работе с git повергали меня в уныние. Здесь я немного опишу свой опыт и оставлю шпаргалки, которые составил для себя в процессе изучения/использования.
Сразу скажу, что пользуюсь сервисом репозитариев BitBucket. Он нравится мне тем, что там можно создавать приватные репозитарии — а так как проекты в основном коммерческие, то эта возможность как нельзя кстати.
В общем, схема работы у меня такая.
1. Создать репозитарий на BitBacket.
2. Выполнить команды :
mkdir /path/to/your/project
cd /path/to/your/project
git init
git remote add origin git@bitbucket.org:username/project-name.git
Где username — ваше имя пользователя, project-name — название проекта на сервере репов. В принципе эти команды я скопировал с BitBacket — он приводит эти команды для начала работы.
3. Если вы не настраивали конфигурационные данные, настроим:
git config --global user.name "Dmitriy"
git config --global user.email mail@mailserver.ru
параметр global указывает на то что эти настройки git сохранит глобально для этого пользователя. К примеру на локальной машине у вас много проектов, часто используете git — можно настройки задать глобально, чтобы не вводить их на каждом новом проекте.
4. Настроим .gitignore
Этот файл говорит git-у, что полезет в него, а что — нет. Допустим у нас в проекте есть папки с блобами. Пишу в этом файле такую строку:
blobs/
5. Добавим файлы проекта:
git add .
6. Ветки master до первого коммита у нас нет — поэтому сделаем коммит:
git commit -a -m "init"
Здесь ключ m и строка в кавычках даёт название коммиту.
7. Теперь всё нужно отправить в репозитарий:
git push origin master
В этом месте может возникнуть ошибка:
login@server:~/public_html$ git push origin master
Counting objects: 2265, done.
Delta compression using up to 40 threads.
fatal: unable to create thread: Resource temporarily unavailable
error: failed to push some refs to 'git@bitbucket.org:username/project-name.git'
Небольшой гуглинг привел меня на StackOverflow, выполним рекомендации:
login@server:~/public_html$ git config --global pack.windowMemory "100m"
login@server:~/public_html$ git config --global pack.SizeLimit "100m"
login@server:~/public_html$ git config --global pack.threads "1"
после этих настроек всё отлично запушилось.
В следующей части расскажу о ветках и зачем они нужны.