GeekBrains
РОСБАНК [CPS] RU
Dfsport
↑↑

↓↓
Флаг России Флаг Англии
🏠 | 💻 PC | Управление версиями Repo | GIT | SVN |

GIT

Содержание статьи
Памятка
Первые шаги в GIT
Задать имя пользователя GIT
Инициализация репозитория GIT (init)
Восстановить последний коммит (git checkout -- .)
Удалённое хранение на GitHub
Проверить с каким удалённым репозиторием git связывает локальный репозиторий
Изменить привязанный удалённый репозиторий
Отправить новые данные на удалённый репозиторий
Ветки (Branches)
Не следить за изменениями некоторых файлов (gitignore)
Ошибки GIT
TortoiseGit

Кратко

Проверяем обстановку

git status

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

git add index.html

Если файлов много и Вы хотите добавить все используйте

git add -A

Убираем файл который не хотим сейчас коммитить

git reset file.txt

Коммитим с комментарием

git commit -m 'Лучшие самоучители на сайте www.andreyolegovich.ru'

Стэйджим и коммитим с комментарием одной командой

git commit -am 'Лучший сайт о Финляндии www.HeiHei.ru'

Пушим на сервер в мастер

git push origin master

Первые шаги в GIT

Скачать GIT можно здесь

Узнать версию установленного git

$ git --verision

git version 2.22.0.windows.1

Задать имя активного пользовотеля

$ git config --global user.name "Andrei"

Проверить имя активного пользовотеля

$ git config user.name

Andrei

Задать email активного пользовотеля

$ git config --global user.email "www.aolegovich.ru@andreyolegovich.ru"

Узнать текущую директорию

$ pwd

/c/Users/aolegovich

Изменить директорию

$ cd /c/Users/aolegovich/Desktop/Sites

Проверить, изменилась ли директория

$ pwd

/c/Users/aolegovich/Desktop/Sites

Создать директорию

$ mkdir "hello-world"

Посмотреть содержимое директории

$ ls

hello-world/

Изменить директорию

$ cd hello-world/

Начать отслеживать изменения - инициализаци или начало работы GIT

$ git init

Initialized empty Git repository in C:/Users/aolegovich/Desktop/Sites/hello-world/.git/

Википедия: По умолчанию репозиторий хранится в подкаталоге с названием «.git» в корневом каталоге рабочей копии дерева файлов, хранящегося в репозитории.

Любое файловое дерево в системе можно превратить в репозиторий git, отдав команду создания репозитория из корневого каталога этого дерева (или указав корневой каталог в параметрах программы)

Создать файл

$ touch "index.html"

Посмотреть свежие изменения в репозитории

$ git status

On branch master

No commits yet

Untracked files:
   (use "git add ..." to include in what will be committed)

        index.html

nothing added to commit but untracked files present (use "git add" to track)

Файл, в котором произошли изменения выделен красным

Добавить файл в группу файлов, которые Вы планируете зафиксировать (staging area)

$ git add index.html

Посмотреть свежие изменения в репозитории

$ git status

On branch master

No commits yet

Changes to be committed:
   (use "git rm --cached ..." to unstage)

        new file: index.html



Файл, который был добавлен в staging area выделен зелёным

Зафиксировать изменения - записать изменения файла в репозиторий.

$ git commit -m 'Мой первый коммит.'

[master (root-commit) e2d3195] My first commit.
1 file changed, 1 insertion(+)
create mode 100644 index.html

Вернуть файл к последнему закоммиченному состоянию

$ git checkout -- .

Изменить директорию

$ cd /c/Users/aolegovich/Desktop/Sites

Клонировать другой репозиторий

$ git clone https://github.com/Name/name.git

Cloning into 'welcome-to-git'...
remote: Enumerating objects: 9, done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 9
Unpacking objects: 100% (9/9), done.


GitHub

Адрес - github.com

Бесплатный (Free) аккаунт означает, что Вы можете работать только с публичным (Public) репозиторием.

Все могут видеть Ваш код, но редактировать его можете только Вы.

Не храните в публичном репозитории файлы с паролями. Если Вам нужна приватность - покупайте приватный режим (Private) или переходите на другой сервис, например BitBucket.org.

После того как аккаунт создан нажмите на плюсик и выберите New repository

Создать новый профиль на github изображение с сайта www.andreyolegovich.ru

Изменить директорию

$ cd /c/Users/aolegovich/Desktop/Sites

Клонировать репозиторий с GitHub (например чей-то репозиторий)

$ git clone https://github.com/Name/name.git

Cloning into 'heihei.ru'...

remote: Enumerating objects: 83, done.
remote: Total 83 (delta 0), reused 0 (delta 0), pack-reused 83
Unpacking objects: 100% (83/83), done.

Проверить с каким удалённым репозиторием git связывает локальный репозиторий

$ git remote -v

origin https://github.com/Name/name.git (fetch)
origin https://github.com/Name/name.git (push)

Изменить привязанный удалённый репозиторий

$ git remote set-url origin https://github.com/YourAccount/your project name.git

Проверить изменился ли привязанный репозиторий

$ git remote -v

origin https://github.com/YourAccount/your project name.git (fetch)
origin https://github.com/YourAccount/your project name.git (push)

Отправить новые данные на удалённый репозиторий

$ git push origin master

Enumerating objects: 83, done.
Counting objects: 100% (83/83), done.
Delta compression using up to 4 threads
Compressing objects: 100% (81/81), done.
Writing objects: 100% (83/83), 3.36 MiB | 3.19 MiB/s, done.
Total 83 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To https://github.com/andreiolegovichru/travel-site.git
* [new branch] master -> master

Ветки (Branches)

Посмотреть какая ветка сейчас активна

$ git branch

* master

Прежде чем создавать новую ветку нужно убедиться в том, что в старой нет несохранённых изменений.

$ git status

On branch master
nothing to commit, working tree clean

Создать новую ветку

$ git branch new-branch

Проверить появилась ли она в списке

$ git branch

* master
new-branch

Перейти в новую ветку

$ git checkout new-branch

Switched to branch 'new-branch'

Вернуться в ветку master

$ git checkout master

Если Вы сделали в ветке new-branch какие-то изменения, закоммитили из и теперь хотите, добавить эти изменения в ветку master нужно выполнить команду merge

$ git merge new-branch

Updating f521fc5..fe7276a
Fast-forward
index.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Создать новую ветку и сразу перейти в неё можно одной командой

$ git checkout -b new-branch-2

.gitignore

Часто бывает нежелательным отслеживать все изменения до единого. Если Вы хотите сфокусироваться на основном коде, можно создать файл .gitignore и добавить туда расширения файлов, которые Вы не будете добавлять в репозиторий.

Пример файла .gitignore в котором мы указываету git не следить за ошибками, логами директорией .tmp и модулями nodejs

# Ignoging:
*.err
*.log
node_modules/
.tmp/

Ошибки GIT

1

fatal: No such remote 'origin'

Скорее всего Вы пытаетесь выполнить

$ git remote set-url origin https://github.com/name/project.git

Попробуйте сперва выполнить

$ git remote add origin https://github.com/name/project.git

2

To https://github.com/YourName/yourproject.git
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/YourName/yourproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Скорее всего Вы пытаетесь выполнить git push origin master в новом репозитории. При этом, когда Вы создавали удалённый репозиторий на github Вы отметили опцию initialize with readme file.

Таким образом на удалённом репозитории файл README.md есть, а на локальном нет. Git не понимает как такое могло произойти и предполагает, что на удалённый репозиторий кто-то (возможно Вы) добавил что-то неотслеженное локальным репозиторием.

Первым делом попробуйте

$ git pull origin master

$ git push origin master

Git скачает файл README.md с удалённого репозитория и затем можно будет спокойно пушить

Если сделать pull не получилось, например, возникла ошибка

From https://github.com/andreiolegovichru/heiheiru
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories

Попробуйте

$ git pull --allow-unrelated-histories origin master

$ git push origin master

TortoiseGit

Устанавливаем TortoiseGit отсюда

Устанавливаем GIT for Windows отсюда

git openSSH or Tortoise plink

После установки Git for Windows появится консоль

git openSSH or Tortoise plink

Во время установки TortoiseGit Вам нужно будет указать путь до Git.exe

Git.exe появится после установки Git for Windows , так что следите за очерёдностью действий.

git openSSH or Tortoise plink

Затем нужно приступить к генерации ключей. Я выбираю опцию Generate PuTTY key pair

git openSSH or Tortoise plink

После утомительно движения мышью в течении ~ 30 секунд Вы увидите результат.

git openSSH or Tortoise plink

Ключи нужно сохранить в директорию на Вашем ПК.

Название и путь до директории желательно запомнить.

Затем Вам нужно посетить страницу загрузки ключей SSH Keys и загрузить туда свой PUBLIC key.

Начинаться он должен с ssh-rsa.

Проще всего скопировать его из окна putty

git openSSH or Tortoise plink

В случае успеха Вы попадёте на

git openSSH or Tortoise plink

Далее нужно указать путь до ключа в настройках TortoiseGit. Я не знаю где он сейчас находится в самих настройках. Раньше был в пункте Remotes, если я не ошибаюсь.

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

git openSSH or Tortoise plink

Чтобы получить точный url который Вы хотите клонировать зайдите в нужную ветку (branch) и нажмите на кнопку Clone.

git openSSH or Tortoise plink

Выберите Clone with SSH. Чтобы скопировать этот адрес нужно нажать на значок копирования.

git openSSH or Tortoise plink

Создадим папку Gitlab_test_HeiHei.ru

git openSSH or Tortoise plink

Кликаем правой кнопкой и выбираем Git Clone

git openSSH or Tortoise plink

Вставляем адрес, который мы до этого скопировали из GitLab в поле URL

Затем показываем путь до приватного ключа и нажимаем OK.

git openSSH or Tortoise plink

В случае успеха TortoiseGit покажет сообщение Success

git openSSH or Tortoise plink

Ветки - Branches

Когда вы работаете с Git важно разобраться с принципом работы веток.

Если Вы разработчик, то стандартная ветка для Вас скорее всего называется dev.

В неё Вы делаете свои коммиты или пуши, а старший программист потом объединяет их в ветку master

Посмотреть на список всех веток можно в разделе Repository → Branches

git openSSH or Tortoise plink

Там будут ветки master, dev и любые какие придумали разработчики.

Иногда они могут быть привязаны к определённым историям в планировщике задач (например Pivotal Tracker) а могут просто появляться для проверки каких-то гипотез.

git openSSH or Tortoise plink

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

git openSSH or Tortoise plink

guides.github.com

Как сэкономить в поездке
GDPR
Проброс портов
Тестировщик ПО

Если сайт не помог, извиняемся за потраченное время - хочу заверить, что мы стараемся не попадать в нерелевантные запросы, но тем не менее не всегда успеваем обновлять ключевые слова. Ну и контролировать поисковую выдачу, конечно, невозможно.

Например: у нас есть статья про аэропорт Хельсинки и про аэропорт Риги но в выдаче по Риге всё равно статья про Хельсинки.

Если статья Вам помогла, нажимайте ДА. Так мы поймём, что переделывать её не нужно.

Занятно наблюдать в вебвизоре, как люди копируют текст, например вежливого отказа в трудоустройстве на английском но игнорируют кнопку ДА.

Сделаем поиск лучше!

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: