6 февраля, 2015, обновлено 23 января, 2016

Git

Git Upload

Проверка удаленного репозитория и настройки crlf

$ git remote show
$ git remote show origin
$ git config --global core.safecrlf
$ git config --global core.autocrlf

Запушить на удаленный репозиторий

$ git status
$ git add .
$ git config --global core.safecrlf
warn
$ git commit -m "upload"
$ git push -u origin master

Склонировать удаленный репозиторий на локальную машину

копируется папка в текущую папку, можно указать в коце необходимую, должна не существовать

/c/Servers/project3/public_html/admin
$ git clone git@github.com:Zlatov/MarkitUp.git markitup

Или запулить если локальный репозиторий уже существует.

/c/Servers/project3/public_html/admin/markitup (master)

$ git pull origin
remote: Counting objects: 44, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 44 (delta 1), reused 44 (delta 1)
Unpacking objects: 100% (44/44), done.
From github.com:Zlatov/MarkitUp
 * [new branch]      master     -> origin/master

Pull = fetch + merge

Запулить к себе можно через фетч + мердж fetch - извлекает изменения из удаленного репозитория, не затрагивает локальные файлы. merge - сливает ветки в локальную ветку.
$ git fetch simplepage
$ git merge simplepage/master

Changing a Passphrase with ssh-keygen

The -p option requests changing the passphrase of a private key file instead of creating a new private key. The program will prompt for the file containing the private key, for the old passphrase, and twice for the new passphrase. Use -f {filename} option to specifies the filename of the key file. For example, change directory to $HOME/.ssh. Open the Terminal app and then type:
$ cd ~/.ssh/

To change DSA passphrase, enter:
$ ssh-keygen -f id_dsa -p

To change RSA passphrase, enter:
$ ssh-keygen -f id_rsa -p

Ветки (branch), Merge - сливаем ветки

Любые правки над рабочим проектом (отдельные задачи) принято делать в веточках, после окончания работ - сливать в мастер и пушить.

$ git branch testing - создать ветку
+
$ git checkout testing - переключиться на ветку
=
$ git checkout -b testing - создать и переключиться.

После работы в ветке-тесте (add, commit) сольём с рабочей веткой
$ git checkout master
$ git merge testing

При такой работе мастер-ветка осталась позади ветки-теста и слияние приведёт просто к "перемотке вперед"

После слияния не забываем удалять ветку-тест:

$ git branch -d testing

Если слияние веток не является простой перемоткой вперед, то Гит автоматически выберет наилучшего общего предка и выполнит "тройное" слияние создав при этом новый коммит. И опять не забываем удалять старую ветку.

Push на удалённый репозиторий без bare-репозитория

Update

Причина отказа пуша в не-бар репозиторий: нельзя пушить в рабочую ветку. Решение - чекаутится в другую ветку и пушить наздоровье. А вообще пушить в паблик таким методом – это не правильно =).

Старое:

Отказались работать следующие методы пуша:

Не даёт запушить на удаленный репозиторий на прямую, если на удаленном репозитории создать любую ветку и перейти на нее, то с локальной машины все прекрасно запушится на ветку master:

$ git branch upto

$ git branch
* master
  upto

$ git checkout upto$ git push simplepage master

После чего, на удаленном репозитории можно чекануться на мастер и удалить ранее созданную ветку.

Второй способ пушить на удаленный репозиторий без bare-репозитория

На удаленном прописать:

git config receive.denyCurrentBranch ignore

теперь не будет выскакивать ошибка

remote: error: refusing to update checked out branch: refs/heads/master...
но на удаленном репозитории не будет меняться фаловая структура (никаких изменений), но при этом pull с удаленки всегда будет актуальным. Что бы изменения на удаленном репозитории "вступили в силу":
git reset --hardgit reset --hard HEAD

Рабочий метод пуша без бар репозитория:

На сервере:

git checkout -b production

Правим файл .git/hooks/post-receive. Содержимое:

cat > .git/hooks/post-receive
#!/bin/sh
cd ..
echo
echo "post-receive start"
echo
env -i git merge --ff-only master
echo

chmod +x .git/hooks/post-receive

С локальной машины просто:

git push origin master

Все!

Удаленные репозитории

удаление / переименовывание

git remote rm remoteName
git remote rename remoteNameOld remoteNameNew

Добавить комментарий

2010–2018 Блог Максима Златова, контакты

PHP execution time: 0.0109 s.
SQL execution time: 0.0016 s. (select publication with comments)

Яндекс.Метрика