Работа с git в windows

С git работать достаточно просто, для работы в windows нужно скачать дистрибутив программы, которая уже будет идти с bush

Качаем отсюда скачать

Устанавливаем все по-умолчанию

Дальше создаем у себя на каком-нибуть диске папку для работы с проектами, я обычно использую папку "c://openserver/domains", тут у меня находятся все проекты, заодно вижу как сайт отображается на локалке

Подготовка к созданию нового проекта

Создаем папку для нового проекта

mkdir newProject

Заходим в нее

cd newProject

Укажем свои данные для git, обычно в каждый коммит, в скрытом виде, прописывается эта инфа

git config --global user.email "you@ mail.zone"
git config --global user.name "Name Surname"

Инициализируем git

git init

Добавляем файлы в репозиторий

git add .
git add --ignore-errors .  //если есть ошибки fatal adding files failed

Делаем commit

git commit -m 'Initial'
git commit -a --amend  //если не отправили данные, то делаем правки в коммите
git reset --soft HEAD^  //отменить предыдущий коммит, но изменения в файлах останутся
git reset --hard HEAD^  //удалить вообще предыдущий коммит
git revert commit-sha1 //если данные отправленны, то делаем коммит в котором отменяем полностью какой-то коммит

Создаем ssh публичные ключи

ssh-keygen.exe

Копируем данные из ключа в наш git репозиторий, например на github

cat ~/.ssh/id_rsa.pub

Загоняем данные из нашего основного локального хранилища в репозиторий

git remote add origin https://github.com/*nameUser*/app1.git
git push -u origin master
git branch --set-upstream-to=origin/master //говорим что наша локаль всегда будет пушить только этот ремоут

Добавление/удаление нового репозитория

 git remote add primer git://github.com/*nameUser2*/app1.git    //добавляем репозиторий
 git remote -v  //смотрим список добавленных
 git remote rm primer   //удаляем существующий адрес репозитория

Получить данные из репозитория

git fetch  //сливаем данные с ремоут ремозитория
git merge //смешиваем данные с нашими

Ошибка получения данных, обычно если Вы не получаете данные с сервера, но при этом что-то сделали локально получится ошибка типа 'error: Your local changes to the following files would be overwritten by merge:'

git stash save --keep-index //Если вы хотите удалить все локальные изменения из вашей рабочей копии, просто спрячьте их:
git stash drop //Если они вам больше не нужны, вы можете удалить их:

Создание новой цепочки

git checkout -b new-branch // назовем ее new-branch

Создание новой цепочки на локали и выгрузка из репо существующих данных

git pull origin master // одноразовое вливание из origin в master
git branch --set-upstream-to=origin/master new-branch  //в new-branch можно выполнять git pull без аргументов, при этом происходит «вливание» из ветки master репозитория origin

Перебазирование, для наложения одной цепочки на другую

git pull --rebase master

Если в удаленном репозитории что-тоесть, а у Вас на локали главные данные, при єтом выпадает ошибка не соответсвия историй

git pull origin master --allow-unrelated-histories  //получаем данные не взирая на историю
git merge origin master  //смешиваем данные
//делаем какой нибудь коммит
git push origin master //обновляем внешний репозиторий

Если у Вас в репозитории новые данные, а на локалке нет, то можно очистить локаль и закачать все по новой

git clean  -d  -f
git pull

Как игнорировать файлы, которые уже отслеживаются?

git rm --cached   //Если вы добавили файл или папку в .gitignore, после того как они попали в репозиторий, то их необходимо удалить из репозитория
git rm -r --cached "storage/framework/cache/"  //Удалить папку
git rm -r --cached .idea //пример удаления папки проекта phpstorm

Настройка прокси, если Вам компьютер находится за прокси сервером, а не выходит на прямую в инет

git config --global http.proxy http://proxyuser:proxypwd @proxy.server.com: 8080  //тут все очевидно, имя пользователя, пароль,  адрес сервера, порт
git config --global --unset http.proxy    //работать напрямую, без прокси-сервера
git config --global --get http.proxy //какой прокси-сервер настроен в данный момент

Игнорирование измененных файлов

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

  • # это коммент - строка будет проигнорирована
  • *p - не добавлять файлы которые заканчиваются на "p"
  • !index.php - НО отслеживать файл index.php, несмотря на то, что мы игнорируем все .p файлы с помощью предыдущего правила
  • test/ - игнорировать все файлы что есть в каталоге "test"
  • test2/*.txt - игнорировать файлы в каталоге "test2", что включают в свое имя ".txt". В подкаталогах "test2" не ,eltn работать
  • test2/**/*.txt - игнорировать все .txt файлы в каталоге "test2", включая подкаталоги.
git status --ignored  //проверяем какие файлы будут игнорироваться
git check-ignore -v *   //подробная проверка
git check-ignore -vn .* //подробная информация со скрытыми файлами и папками