Git: различия между версиями

Материал из support.qbpro.ru
imported>Vix
imported>Vix
 
(не показано 8 промежуточных версий этого же участника)
Строка 70: Строка 70:
  git push -u origin --all
  git push -u origin --all


==GOGS==
* Если возникает ошибка: "Peer's Certificate issuer is not recognized"
ОПИСАНИЕ:
используйте параметр: git -c http.sslVerify=false clone ...
<hr>
==[[GOGS]]==
'''Gogs''' — продукт китайских разработчиков. На первый взгляд он почти ничем не отличается от GitHub или BitBucket — это даже по дизайну заметно.
<br>
Но при всех внешних сходствах у него есть одно выгодное отличие от существующих аналогов: легковесность.
==[[Git-Ifs]]==
<br>


'''Gogs''' написан на Go (собственно, это название представляет собой сокращение от Go Git Service). Из этого факта вытекают серьёзные преимущества: низкие требования к системным ресурсам, минимум зависимостей, простота установки и настройки.
==ПОЛЕЗНОЕ==
 
В числе важнейших характеристик '''Gogs''' также следует назвать:
 
* поддержку протоколов '''HTTP(s) и SSH''';
* поддержку '''SMTP''' и '''LDAP''';
* возможность создания как приватных, так и публичных репозиториев;
* интеграцию с социальными сетями (пока что поддерживаются '''GitHub, Google+''', а также китайские сервисы '''QQ и Weibo''');
* возможность работы в связке с сервисами непрерывной интеграции и '''DevOps-сервисами'''
 
'''УСТАНОВКА и НАСТРОЙКА GOGS & POSTGRESQL:'''
<hr>
'''* Представлено в виде готового скрипта для Debian 9:'''
#!/bin/bash
# install & build googs
#
git_path="/home/git";
gogs_conf="/etc/gogs";
## подготовка
sudo apt update && sudo apt upgrade
sudo apt-get install -y git golang golang-go golang-any golang-doc golang-src
# версия golang должна быть не ниже 1.7
sudo adduser --disabled-login --gecos 'Gogs' git
mkdir -p $gogs_path
mkdir -p $gogs_conf/custom/conf;
touch $gogs_conf/custom/conf/app.ini;
mkdir -p $gogs_conf/custom/sert;
## сертификаты для gogs
cd $gogs_conf/custom/sert
openssl req -new -x509 -days 3650 -nodes -out gogs.pem.cert -keyout gogs.pem.key
#
echo "export GOPATH=$git_path/gogs">>$git_path/.bashrc;
echo "export GOROOT=$git_path/go">>$git_path/.bashrc;
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $git_path/.bashrc;
chown -R git:git $gogs_path;
chown -R git:git $gogs_conf;
sudo su - git;
mkdir -p $git_path/go/src;
mkdir -p $git_path/go/bin;
mkdir -p $git_path/go/pkg;
ln -s /usr/lib/go/src/* $git_path/go/src
ln -s /usr/lib/go/bin/* $git_path/go/bin
ln -s /usr/lib/go/pkg/* $git_path/go/pkg
go get -u github.com/gogs/gogs;
ln -s $git_path/go/src/github.com/gogs/gogs $git_path;
cd $git_path/gogs;
# сборка gogs
go build;
ln -s $git_path/gogs/gogs $git_path/go/bin/gogs;
ln -s $gogs_conf/custom $git_path/gogs;
logout;
# установка на debian
cp -f $gogs_path/gogs/scripts/init/debian/gogs /etc/init.d/gogs
update-rc.d gogs defaults
chmod 0755 /etc/init.d/gogs
cp -f $gogs_path/gogs/scripts/systemd/gogs.service /lib/systemd/system/gogs.service
systemctl enable gogs.service
# правим конфиг под базу данных postgresql если надо или через localhost:3000
#editor go/src/github.com/gogits/gogs/conf/app.ini
# и копируем его в /etc/gogs/custom/conf/app.ini
systemctl start gogs.service
##
## перенаправляем порт 3000 на 80
## section NAT
iptables -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
## сохряняем для восстановления при перезагрузке
if [ -d /etc/scripts/iptables ];
    then
        mkdir -p /etc/scripts/iptables;
fi
iptables-save > /etc/scripts/iptables/rule;
##
 
'''* дальше необходимо создать базу данных (у меня используется Postgresql), краткий пример:'''
 
#sudo apt-get install -y postgresql postgresql-client libpq-dev
#sudo -u postgres psql -d template1
#CREATE USER gitadmin CREATEDB;
#\password mypassdb
#
#CREATE DATABASE gogs OWNER gitadmin;
#\q
#
#
 
'''* Пример файла конфигурации в /etc/gogs/custom/conf/app.ini'''
 
APP_NAME = my organization
RUN_USER = git
RUN_MODE = prod
[database]
DB_TYPE  = postgres
HOST    = 192.5.1.7:5432
NAME    = gogs
USER    = gitadmin
PASSWD  = mypassdb
SSL_MODE = disable
PATH    = data/gogs.db
[repository]
ROOT = /home/git/Projects
[server]
DOMAIN          = gitserver.com
HTTP_ADDR        = 40.57.12.9
HTTP_PORT        = 3000
ROOT_URL        = http://gitserver.com/
DISABLE_SSH      = false
SSH_PORT        = 22
START_SSH_SERVER = false
OFFLINE_MODE    = false
[mailer]
ENABLED = true
SEND_BUFFER_LEN = 100
SUBJECT = %(APP_NAME)s
DISABLE_HELO =
; Use client certificate
USE_CERTIFICATE = false
SKIP_VERIFY = true
HOST    = mail.myhost.com:25
FROM    = admin@myhost.com
USER    = admin
PASSWD  = mymailpass
USE_PLAIN_TEXT = true
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL    = true
DISABLE_REGISTRATION  = true
ENABLE_CAPTCHA        = true
REQUIRE_SIGNIN_VIEW    = true
[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = false
[session]
PROVIDER = file
[log]
MODE      = file
LEVEL    = Info
ROOT_PATH = /home/git/gogs/log
[security]
INSTALL_LOCK = true
SECRET_KEY  = adT0023fas
[i18n]
LANGS = en-US,ru-RU
NAMES = English,русский
; Used for datetimepicker
[i18n.datelang]
en-US = en
ru-RU = ru
 
Все подробности по Postgresql смотрим [http://support.qbpro.ru/index.php?title=PostgreSQL тут]
 
=='''ПОЛЕЗНОЕ'''==
* [https://eax.me/git-commands/ Моя шпаргалка по работе с Git]
* [https://eax.me/git-commands/ Моя шпаргалка по работе с Git]
* [https://git-scm.com/book/ru/v2/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-Git-%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9 Основы Git - Запись изменений в репозиторий]
* [https://git-scm.com/book/ru/v2/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-Git-%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9 Основы Git - Запись изменений в репозиторий]
* [https://ru.stackoverflow.com/questions/431520/%D0%9A%D0%B0%D0%BA-%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C%D1%81%D1%8F-%D0%BE%D1%82%D0%BA%D0%B0%D1%82%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D0%BA-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D1%80%D0%B0%D0%BD%D0%BD%D0%B5%D0%BC%D1%83-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D1%83 Как вернуться (откатиться) к более раннему коммиту?]
* [https://ru.stackoverflow.com/questions/431520/%D0%9A%D0%B0%D0%BA-%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C%D1%81%D1%8F-%D0%BE%D1%82%D0%BA%D0%B0%D1%82%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D0%BA-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D1%80%D0%B0%D0%BD%D0%BD%D0%B5%D0%BC%D1%83-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D1%83 Как вернуться (откатиться) к более раннему коммиту?]
* [https://githowto.com/ru?gf_page=upload обучение Git]
* [https://githowto.com/ru?gf_page=upload обучение Git]
* [https://habr.com/ru/post/342116/ Git на практике]
* [[Ошибка git "fatal: unable to access 'https://...': Peer's Certificate issuer is not recognized."]]
* [[ Push Error: RPC failed; result=22, HTTP code = 413]]


'''ИСТОЧНИКИ:'''
'''ИСТОЧНИКИ:'''

Текущая версия от 12:15, 4 августа 2022

GIT

* Команды git:

Создание нового репозитария:

touch README.md
git init
git add .
git commit -m "first commit"
git remote add origin http://gitserver.org/dev_user/testrep.git
git push -u origin dev_user


  • Как обнулить историю Git?

git reset --hard commitId #УДАЛЯЕТ ИСТОРИЮ GIT

или

Все эти инструкции верны, если на удаленном сервере у вас пусто, а локально - есть проект и репозиторий Git с историей, которую вы хотите удалить. Что будет потеряно безвозвратно

   Собственно, история. Вы точно хотите ее потерять? Ради нее весь Git и придумывался.
   Весь код в не-слитых (unmerged) ветках.
   Весь код в orphaned ветках.

Быстрый способ

Найдите первый коммит в ветке, запомните его sha1.

git log --oneline

Переключитесь на тот коммит, который хотите сохранить в итоге.

git checkout master

Теперь используем git reset --soft чтобы сделать из всей истории один коммит (подробнее - пункт 4.1: Как вернуться (откатиться) к более раннему коммиту? ).

git reset --soft <first-commit-sha1>
git commit -m'слил историю в один коммит'

Долгий способ

Сделайте бэкап локального репозитория. Можно запушить на резервный удаленный репозиторий, а можно просто взять и переместить папку .git в другое место.

mkdir ../git-backup
mv .git ../git-backup/.git

Если не переместили локально, а забэкапили куда-то еще: удаляем папку.

rm -Rf .git

Теперь заново инициализируем репозиторий:

git init

Добавляем все файлы в рабочей области и делаем коммит.

git add .
git commit -m'начал с нуля'   

Когда все готово

Подключаем удаленный репозиторий и заливаем на него изменения:

git remote add origin <url>
git push -u origin --all
  • Если возникает ошибка: "Peer's Certificate issuer is not recognized"

используйте параметр: git -c http.sslVerify=false clone ...

GOGS


Git-Ifs


ПОЛЕЗНОЕ

ИСТОЧНИКИ: