Воскресенье, 17.11.2024, 02:52

Компьютерная помощь

Записки системного администратора

Меню сайта
Категории раздела
Компьютер [36]
Общекомпьютерные темы
Windows server [18]
Статьи по версиям windows для серверов.
Windows [30]
Статьи по версиям windows для рабочих станций.
Unix [65]
Статьи на тему unix-подобных систем. Linux, FreeBSD и т.п.
Видеомонтаж [10]
Статьи по нелинейному видеомонтажу
Программирование [9]
Заметки по программированию
Databases [10]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Вход на сайт

Поиск

Главная » Статьи » Программирование

Git. Практика с нуля. Работа с github.com

Команда установки
apt install git
Конфигурация .gitconfig (определение локального пользователя git)
git config --global user.name "User"
git config --global user.email "aaaaa@bb.cc"
Посмотреть все конфигурации:
git config -l

Работа с Local Repository
Создаем каталог
mkdir gitfolder
Создаем из каталога локальный репозиторий, для этого внутри каталога выполняем команду:
git init .
команда создаст скрытую директорию .git
Создадим файл в нашей директории gitfolder
echo "Text of file" > file1.txt
git status -команда для просмотра файлов и их статуса в директории (локального репозитория)
git add * -добавление файлов в директории в статус "stage"
git commit -m "First commit, version 1.0" -коммитим наши файлы (создаем снапшот нашей директории или создаем копию в локальный репозиторий)

Сделаем изменения, добавим строку в наш файл file1.txt и создадим файл file2.txt
echo "Text of file2" > file2.txt
git add * -стейджим файлы
и коммитим:
git commit -m "Second commit, version 1.1"

git log -просмотр истории коммитов
git log -1 -p или git show -просмотр изменений в файле
git checkout -- file1.txt возвращение исходного файла до статуса "stage", т.е. до выполнения команды git add *

Игнор или исключения Git`ом файлов или директорий в локальном репозитории. Для этого создаем файл .gitignore
nano .gitignore
в файле прописываем названия файлов, которые мы хотим игнорить. Можно прописывать имя директоий, файлы по маске.
file1.txt
*.txt
logs/

Возвращение на предыдущие версии, внесение изменений в коммит, удаление коммита
git log
git checkout 8320430a35ca749f6ccb1f881df5f2f501aaa32e (хэш номер версии из команды git log)
Возврат на последнюю версию
git checkout master

 

Правка коммита. Переходим на нужную ветку (нужный коммит), выполняем команду
git commit --amend
открывается editor, правим файл и сохраняем.
Удаление последних коммитов:
git reset --hard HEAD~1 -удаление 1 последнего коммита
git reset --hard HEAD~2 -удаление 2 последних коммитов

 

Использование github.com
Создадим аккаунт и новый репозиторий.
Клонируем себе репозиторий по https
git clone https://github.com/Vit/testproject.git
делаем изменения в файлах,
git add .
git commit -m "my comment"
Отправляем файлы обратно на github.com командой
git push origin

Hастройка логина в GitHub через SSH Key на Linux
Сгенерируем ключи, они генерируются в домашнем каталоге, каталог .ssh
ssh-keygen
Сгенерировались 2 файлика: id_rsa, id_rsa.pub
Смотрим содержимое публичного ключа командой

cat ~/.ssh/id_rsa.pub
Копируем содержимое и вставляем на github.com в раздел user(иконка профиля в правом верхнем углу)>settings>SSH and GPG keys>new ssh key
Посмотрим текущее соединение с репозиторием командой:
git remote -v
Переключимся на соединение SSH. Для этого в репозитории на github.com заходим в раздел "clone or download" и копируем линк типа git@github.com:Vit/testproject.git
Изменяем тип подключения к github.com командой:
git remote set-url origin git@github.com:Vit/testproject.git
Далее можем пользоваться командами git push origin без запроса пароля.

Создание и работа с ветвлениями. Branch.
Создаем новое ответвление
git branch name_of_branch
Перейти на ответвление name_of_branch:
git checkout name_of_branch
Или создаем и переходим одной командой:

git checkout -b name_of_branch
Посмотреть на какой ветке находимся сейчас:
git branch
Удалить ветку:
git branch -d name_of_branch


Merge. Соединение ветвей.
Переходим на ветку master и соединяем ветку name_of_branch
git checkout master
git merge name_of_branch

Отправить созданную ветку name_of_branch на github.com
git push --set-upstream origin name_of_branch
Делаем merge на github.com через web интерфейс
Удалить ветку ветку name_of_branch на github.com (если есть на то права)
git push --set-upstream origin --delete name_of_branch

 

Шпаргалка

Восстановить удалённый файл
Сначала нужно найти последний коммит, где файл ещё существует:
git rev-list -n 1 HEAD -- имя_файла
Потом восстановить этот файл:
git checkout найденный_коммит^ -- имя_файла

Ошибка в комментарии к коммиту
Если коммит ещё не был отправлен на сервер (push), то можно воспользоваться простой командой, позволяющей редактировать текст сообщения к последнему коммиту:
git commit --amend

Как отменить последний коммит?
Можно использовать git reset, вот так:
git reset --hard HEAD~1
HEAD~1 означает один коммит до HEAD, т.е. до текущего положения. Стоит заметить, что это «ядерный» способ, который отменит все изменения. Если вам нужно сохранить всё, что вы сделали, но еще не успели закоммитить, используйте:
git reset --soft HEAD~1
Удалить ветку на сервере
git push origin --delete имя_ветки

В чём разница между «git pull» и «git fetch»?
git pull — это, по сути, git fetch, после которого сразу же следует git merge. git fetch получает изменения с сервера и сохраняет их в refs/remotes/. Это никак не влияет на локальные ветки и текущие изменения. А git pull вливает все эти изменения в локальную копию.

Как отменить «git add» до коммита?
Вы выполнили git add имя_файла случайно и хотите отменить добавление файла. Если коммит ещё не был сделан, то поможет:
git reset имя_файла

Как разрешать конфликты слияния?
Используйте программу git mergetool, которая предоставляет удобный интерфейс для разрешения конфликтов.

Удалить все локальные файлы и директории, которые не отслеживает Git, из вашей текущей копии
Осторожно! Лучше сделайте перед этим бэкап.
git clean -f -d

Клонировать все ветки с сервера
Скорее всего, вы это уже сделали, а ветки просто скрыты. Вот команда, чтобы показать их:
git branch -a

Можно использовать git checkout origin/имя_ветки, чтобы посмотреть на нужную ветку. Или git checkout -b имя_ветки origin/имя_ветки, чтобы создать локальную ветку, соответствующую удалённой.

Переименовать локальную ветку
git branch -m oldname newname

Вернуться к любому коммиту
Можно использовать git reset, как показано ранее. Это будет означать, что вы хотите навсегда вернуться к тому состоянию, в котором вы были, а не просто посмотреть на него (для этого надо сделать checkout). Идентификатор коммита должен быть такой, какой прописан в выводе команды git log.
git reset --hard идентификатор_коммита
Ещё раз повторим: команда отменит все текущие изменения, так что убедитесь, что вам это действительно нужно. Или используйте --soft вместо --hard.

Удалить подмодуль (submodule)
Создание подмодулей используется довольно редко, но иногда они всё-таки встречаются. Вот, что вам нужно:
git submodule deinit submodulename
git rm submodulename
git rm --cached submodulename
rm -rf .git/modules/submodulename

Перезаписать локальные файлы во время git pull
Вам снова поможет git reset:
git fetch --all
git reset --hard origin/master

Как добавить пустую директорию в репозиторий?
Никак! Такая возможность просто не поддерживается, т.к. считается, что вам это не нужно. Но есть один трюк. Можно создать файл .gitignore в нужной директории со следующим содержимым:
# Игнорируем всё в этой директории
*
# Кроме самого файла .gitignore
!.gitignore

Экспортирование исходников аналогично «svn export»
Используйте git archive, например, так:
git archive --format zip --output /путь/к/файлу/файл.zip master

Отменить все изменения, кроме тех, что уже добавлены в планируемый коммит
git checkout -- .

Создать новую ветку на сервере из текущей локальной ветки
git config --global push.default current
git push -u

Восстановить удалённый файл
Сначала нужно найти последний коммит, где файл ещё существует:
git rev-list -n 1 HEAD -- имя_файла
Потом восстановить этот файл:
git checkout найденный_коммит^ -- имя_файла

Вернуть один конкретный файл в состояние, в котором он был в каком-либо коммите
Почти как в прошлом примере, только чуть проще:
git checkout идентификатор_коммита имя_файла

Сделать так, чтобы Git игнорировал изменения прав файлов
git config core.fileMode false

Заставить Git помнить пароль при работе с https
Для запоминания на 15 минут:
git config --global credential.helper cache

Можно настроить и более долгий период:
git config --global credential.helper "cache --timeout=XXXX"

 

 

 

Категория: Программирование | Добавил: admin (03.10.2018)
Просмотров: 748 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 2
2 Brandonplamb  
0
fluoxetine erectile dysfunction <a href=""> https://forums.dieviete.lv/profils/127605/forum/ </a> health care company

1 Dmitry  
0
cool

Имя *:
Email *:
Код *: