Форум программистов, компьютерный форум, киберфорум
KellyDink
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Git и Debian

Запись от KellyDink размещена 02.06.2017 в 15:01
Показов 2896 Комментарии 4
Метки debian, git, linux

Задача: склонировать проект себе на компьютер, добавить коммит, просмотреть коммит, порадоваться, если все работает.

Исполнение:
1. сначала надо установить git себе на компутер, иначе работать ничего не будет. Все максимально просто. Если зайти на официальный сайт, там будет подробнейшая инструкция по установке в одну строчку
C++
1
apt-get install git
2. Чтоб убедиться, что мы его установили, достаточно ввести команду
C++
1
2
git --version
git version 2.1.4
на что система Вам должна вывести номер версии вашего гита.

Далее необходимо настроить Git. Это совсем не обязательно. Но красоту надо наводить. С ней гораздо приятнее работать.
3. Сначала мы введем имя, которое будет отображаться у других пользователей:
C++
1
git config --global user.name "KellyDink"
4,
4. Теперь добавляем email, который будет отображаться у других пользователей под Вашими коммитами
C++
1
git config --global user.email "KellyDink@domain.com"
5. Теперь переходим в предполагаемую папку, где будут храниться все проекты, создаем ее и заходим внутрь. Папка, как и следовало ожидать, пустая. Теперь, если там выполнить команду
C++
1
 git init
, то в папке появится скрытая папка .git, в которой хранятся все конфиги.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/home/projects# mkdir git
/home/projects# cd git/
/home/projects/git# ls -la
итого 8
drwxr-xr-x 2 root root 4096 апр  5 13:00 .
drwxr-xr-x 4 root root 4096 апр  5 13:00 ..
/home/projects/git# git init
Initialized empty Git repository in /home/projects/git/.git/
/home/projects/git# ls -la
итого 12
drwxr-xr-x 3 root root 4096 апр  5 13:02 .
drwxr-xr-x 4 root root 4096 апр  5 13:00 ..
drwxr-xr-x 7 root root 4096 апр  5 13:02 .git
/home/projects/git# cd .git/
/home/projects/git/.git# ls -la
итого 40
drwxr-xr-x 7 root root 4096 апр  5 13:02 .
drwxr-xr-x 3 root root 4096 апр  5 13:02 ..
drwxr-xr-x 2 root root 4096 апр  5 13:02 branches
-rwxr--r-- 1 root root   92 апр  5 13:02 config
-rw-r--r-- 1 root root   73 апр  5 13:02 description
-rw-r--r-- 1 root root   23 апр  5 13:02 HEAD
drwxr-xr-x 2 root root 4096 апр  5 13:02 hooks
drwxr-xr-x 2 root root 4096 апр  5 13:02 info
drwxr-xr-x 4 root root 4096 апр  5 13:02 objects
drwxr-xr-x 4 root root 4096 апр  5 13:02 refs

Файл config должен содержать 4 строчки и теперь, если мы выполним команды из 3 и 4 пункта без ключа --global в нашей папке с проектом, то мы произведем ЛОКАЛЬНЫЕ настройки этого проекта) никакой существенной разницы это не несет и пока я смысла в этом не очень вижу, но все-равно наглядность этих настроек мы можем просмотреть в файлике config, о котором говорилось выше. В нем должны появиться настройки [user]. Если очень хочется, то можно изменять настройки прямо из этого файлика, но лучше не надо. Такая тонкая настройка может понадобится, если с одного компьютера производятся работа и с личными проектами и рабочими)
Кликните здесь для просмотра всего текста
root@KaterinaDeb:/home/projects/git/.git# cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
/home/projects/git/.git# cd ..
/home/projects/git# git config user.email "KellyDink@domain.com"
/home/projects/git# git config user.name "KellyDink"
/home/projects/git# cat /.git/config
cat: /.git/config: Нет такого файла или каталога
/home/projects/git# cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[user]
email = KellyDink@domain.com
name = KellyDink


Первое, что надо сделать, это научиться коммитить. Для этого нужно выполнить целых 2 комманды
Теперь самое основное - склонировать репозиторий себе на компутер и ковыряться у себя на локальном ПК.
Code
1
git clone https://gitlab/FSI/Web.git
только вот в ответ на мой высокий порыв он мне говорит об отсутствии сертификатов.
Кликните здесь для просмотра всего текста
Cloning into 'Web'...
fatal: unable to access 'https://gitlab.tc-secur.local/FSI/OTDRWeb.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

чтобы установить сертификат на linux нужно его выкачать с браузера С ФОРМАТЕ PEM, добавить ему расширение .crt и выполнить
Code
1
2
3
cp gitlab.tc-secur.local gitlab.tc-secur.local.crt
cp gitlab.tc-secur.local.crt /usr/share/ca-certificates/
dpkg-reconfigure ca-certificates
попутно отвечая ДА на все вопросы.
Если вдруг Вы обнаружите полное отсутствие папки /usr/share/ca-certificates у себя на Пк, то стоит сначала установить
Code
1
apt-get install ca-certificates
Если зайти на Git через браузер, он услужливо сообщает нерадивым программистам (таким как я, например), что пока ты не добавишь ssh key в свою учетку, то коммитить, заливать и что-либо делать ты не сможешь. Умный гит, в отличии от меня.

Для этого под пользователем, под которым собираемся работать, проверяем есть ли наш ключ
Code
1
cat ~/.ssh/id_rsa.pub
и если там пусто, то выпускаем его

Code
1
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
после чего снова его просматриваем и копируем в веб версию гита в вкладку ssh keys.
Теперь снова переходим в проект и там видим, что ссылка на проект изменилась на ssh

Code
1
cat ~/.ssh/id_rsa.pub
просмотрела публичный ключ и его вместе со всеми ssh-rsa скопировала в веб морду на вкладку SSH key

потом выполнила
Code
1
 ssh-add ~/.ssh/id_rsa
(т.к. оставляла его имя по умолчанию)
а если вдруг на это он выдает ошибку:
Code
1
Could not open a connection to your authentication agent.
то сначала запускаем агента что логично, но вестимо не для меня
Code
1
eval $(ssh-agent)
и попробовала
Code
1
  git clone git@gitlab.domain:groupname/Project_A.git
он потребовал пароль - ввела пароль от моего закрытого ключа, который поставила в самом первом пункте
Кстати, если пароль на ключ Вы не устанавливали, а он упорно требует пароль, то возможно достаточно будет запустить этого агента и все заработает.

все заработала) я склонировала себе проект. Стоит обратить внимание, что клонирование идет под учеткой git.
если вдруг он на Вас ругается вот так:
Code
1
2
3
4
5
6
7
8
9
10
git clone git@gitlab.local:Web.git
Cloning into 'OTDRWeb'...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/katerina/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private_type: bad permissions
git@gitlab.tc-secur.local's password:
то надо ограничить права на файл с ключом до вот таких:
Code
1
2
katerina@Deb:/home/projects/test123$ sudo chmod 0600 ~/.ssh/id_rsa
katerina@Deb:/home/projects/test123$ sudo chmod 0600 ~/.ssh/id_rsa.pub
зашла в появившуюся папочку и изменила один файл.
после чего
Code
1
git status
начал подсвечивать красненьким этот измененный файл и трезвонить о том, что он измененный.
Code
1
2
3
4
5
6
7
8
9
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
    modified:   application/views/layouts/station.php
 
no changes added to commit (use "git add" and/or "git commit -a")
а теперь, если его добавить
Code
1
git add application/views/layouts/station.php
чтобы добавить все файлы, то достаточно написать
Code
1
git add -A
то гит проиндексировал этот файл и он стал зелененьким)
Теперь надо добавить комментарий. Ходят слухи, что заливать на гит без комментариев дурной тон.

Code
1
git commit -m "тестовое изменение."
и потом
Code
1
git push
теперь в
Code
1
git log
мы сможем увидеть наш коммит
Метки debian, git, linux
Размещено в linux, Git
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Аватар для ntlinuxnt
    Что-то мне кажется, если убрать apt, то этот ман подойдет к 95% дистров.
    Запись от ntlinuxnt размещена 03.06.2017 в 02:16 ntlinuxnt вне форума
  2. Старый комментарий
    Аватар для Rius
    А если абстрагироваться от путей и ssh-add, то и к Windows.

    KellyDink коммитить всегда и всё сразу - тоже дурной тон. В одном коммите должны быть изменения, связанные между собой, а не вообще всё, что мы изменили с прошлого коммита. И консольный интерфейс, и GUI-оболочки позволяют добавлять в индекс отдельные изменения.
    Запись от Rius размещена 04.06.2017 в 18:34 Rius вне форума
  3. Старый комментарий
    Аватар для KellyDink
    Цитата Сообщение от Rius
    А если абстрагироваться от путей и ssh-add, то и к Windows.
    да) Гит приятен тем, что он один на все системы. Я вот делала по видяшке с макосью

    Цитата Сообщение от Rius
    NICK]KellyDink[/NICK] коммитить всегда и всё сразу - тоже дурной тон. В одном коммите должны быть изменения, связанные между собой, а не вообще всё, что мы изменили с прошлого коммита. И консольный интерфейс, и GUI-оболочки позволяют добавлять в индекс отдельные изменения.
    а как мне добавлять изменения? я вот знаю, как целый файл добавить
    Code
    1
    
    git add
    а можно еще и отдельные изменения добавлять?
    Запись от KellyDink размещена 05.06.2017 в 10:55 KellyDink вне форума
  4. Старый комментарий
    Аватар для Rius
    Bash
    1
    
    git add -p
    Там показываются отдельные hunk, который можно включить в stage или пропустить. Без указания пути поиск происходит во всей рабочей копии. При указании файла/каталога - только где указано.
    Когда всё нужное добавлено, можно делать commit.
    Hunk'и при добавлении тоже можно поправить, если git что-то лишнее захватил.

    https://git-scm.com/book/en/v2... ve-Staging
    Запись от Rius размещена 05.06.2017 в 11:00 Rius вне форума
 
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru