ENote
  • ✨Home
    • Відмова від відповідальності
  • Progr
    • Python
      • Модулі
        • pip
        • cgitb
        • datetime
          • Класс datetime() модуля datetime
            • Методы объекта datetime.datetime()
            • datetime.datetime examples
          • Класс timedelta() модуля datetime
            • datetime.timedelta examples
          • Класс date() модуля datetime
            • datetime.date examples
          • Класс time() модуля datetime
            • Формат для функций .strftime() и .strptime(). модуля datetime
        • os.path
        • pathlib
          • pathlib to str
        • subproces
        • os
        • Jinja
          • Синтаксис шаблонів Jinja
          • Клас Environment()
          • Простой пример cgi-скрипта c Jinja-шаблоном
          • Создание переменных
            • Як оновити глобальну змінну зсередини оператора IF / ELSE або циклу FOR
          • Фільтри і методи
          • Число у рядок, slices
          • Вбудовані фільтри Jinja2
        • re
          • re.search - example
          • re.findall - example
        • email / smtplib
          • Как отправлять электронные письма с помощью Python
        • requests
          • Як зберегти та завантажити файли cookie в запитах Python?
          • Извлечение и установка cookies с модулем requests в Python
          • Links
        • http.cookies
          • Всё о работе с cookie в Python — класс http.cookies
        • xlrd
        • xlwt
        • borb
          • ChunkOfText
          • send_usage_statistics
          • borb clear
          • 2.1.3 vs 2.1.15
          • QR-code
          • Залежності borb
        • JSON
          • Кирилиця в JSON
        • matplotlib
        • argparse
        • click
        • configparser
        • traceback
        • sys
          • exit()
        • mysql-connector-python
        • logging
        • icrawler
        • Auto Plates
        • rembg
        • random
      • Strings
        • Built-in methods
        • Форматування виводу
        • Початкові нулі
        • Рядок в число
      • list
        • Об’єднання списків
        • list.sort(), sorted()
        • list.reverse(), reversed()
        • all(), any()
        • sum(), min(), max()
        • map(), filter(), reduce()
        • join(), split()
      • tuple
      • dict
        • Об'єднання / злиття словників
        • Сортування словника Python: значення, ключі тощо
      • set
      • class Enum
      • Середнє арифметичне
      • Virtual environment
        • web-app
      • type(), isinstance()
      • __main__
      • Files & Dirs
        • Try except for exception handling
        • Cписок файлов директории
        • User Home Dir
        • Copy file
      • *args, **qwargs
      • Links
      • Область видимости
      • Handling a File Error
      • assert
      • if
      • Числа
        • Округлення чисел
        • Отримати число з рядка
      • Обработка исключений в Python
      • Файлы и сериализация данных
      • OOP
      • Net and Web
      • Структура проекта на Python
      • Распаковка итерируемых объектов
      • Links
      • Algorithms
      • Python exit commands: quit(), exit(), sys.exit() and os._exit()
      • Цикли for / while
      • uuid
    • JavaScript
      • String
        • replaceAll() polyfill
        • Шаблонные строки
      • Array
        • Все способы перебора массива в JavaScript
      • Object
      • document.location
      • RegExp
      • Examples
        • Вычисление остатка от деления
        • Остаток от деления и деление без остатка
        • Округление числа
      • XMLHttpRequest
      • alert, prompt, confirm
      • onclick
      • hidden, display:none
      • LocalStorage, sessionStorage
      • null, undefined
      • cookies (js)
      • var, let и const
        • var vs let
        • const
      • Модифікація DOM
        • DOM select
      • JSON
        • Try
      • fetch
      • typeof
      • FormData не включає disabled набори полів
      • FormData, fdata
      • Більше одного відео YouTube на одній сторінці
    • HTML, CSS
      • favicon
      • Деякі спецсимволи
      • meta
      • ASCII table
      • lang
      • Псевдоелементи ::after і ::before
      • Cursor
      • Об использовании нестандартных пробелов
      • Картинка фоном
      • Безпечні веб-шрифти
      • Завжди внизу, незалежно від пропорцій екрану
      • напівпрозорий елемент
      • Символи з тінью
      • SVG (bootstrap)
      • rel = canonical
      • link stylesheet: integrity & crossorigin
      • rel = noopener
    • Bootstrap
      • Form Validate
      • Password show/hide
    • Errors
  • Dev
    • Git
      • clone
      • git-scm (book)
      • git config
        • files .git*
        • core.filemode
        • core.sharedRepository
      • .gitignore
      • .gitkeep
      • Видалити з репозиторію
        • Видалений файл з однієї гілки...
      • Пам’ятка
        • Перегляд історії комітів
        • Скасувати git add
        • revert
        • Скасувати внесені зміни у файл
        • Додати до коміту файл
        • Видалити історію попередніх коммітів, та почати "з нуля"
        • Додати файли в останній коміт
      • Робота з гілками
        • Порівняти гілки
      • Git за полчаса
      • Три розділи проєкту Git
      • Merge conflict
      • Pull error
        • Git Error: You have divergent branches...
      • diff
      • Video
      • Merge скасувати
      • .gitignore: Permission denied
    • GitHub
      • SSH-підключення до GitHub
      • Перенести на сервер локальный репозиторий
      • Перенести на сервер репозиторій разом з історією
      • Створення змісту
    • Security
      • robots.txt
      • Cookies
    • Аутентифікація і cookies
      • ChatGPT
  • data
    • MySQL
      • MyISAM vs InnoDB
      • Типи даних
        • NULL (todo)
        • TIMESTAMP
        • YEAR
        • JSON
        • Требования к памяти для символьных типов
        • Поиск записей в таблице, которым нет соответствия в другой
      • Приклад створення БД, та користувача
        • Права для пользователей
      • Переглянути всі індекси таблиці
      • Копіювання, клонування таблиць
      • TEMPORARY TABLE
      • JOIN
      • ALTER TABLE
      • AUTO_INCREMENT
        • AUTO_INCREMENT у складовому індексі
      • LIMIT
        • Использование MySQL LIMIT
      • 10 Примеров входной загрузки данных из текстового файла в таблицы MySQL
      • Рішення
        • Выявление и удаление несвязанных записей
        • Выборка произвольных записей
        • Коректне сортування українських літер
        • Найти записи, которые присутствуют в одной таблице и отсутствуют во второй
        • Как удобно посмотреть данные...
        • Нахождение "дыр" в нумерации
        • Знайти дубликати полів в одній таблиці
        • Дані колонки 1 табл. перенести в 2 табл.
      • Функції
        • LAST_INSERT_ID()
        • GROUP_CONCAT
        • COUNT + DISTINCT
        • Функции для работы с датами и временем
      • Автоматизируйте создание бэкапов
      • mysqldump
        • Time Zone UTC
      • Результат запиту у файл
      • Результат запиту у змінну
      • Пособие по MySQL на Python
      • Змінні
      • Эмуляция функции row_number() в MySQL
      • Изучаем хранимые процедуры MySQL
      • SELECT DISTINCT
      • Dump всієї бази даних
      • Індекси
      • FOREIGN KEY
      • MAX(), MIN()
      • LENGTH, CHAR_LENGTH
      • Встановлення
    • MariaDB
    • PostgreSQL
      • Работа с базой данных PostgreSQL
      • Работаем с PostgreSQL через командную строку в Linux
    • Domains
      • Життєвий цикл доменів
      • Статус домена
    • SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
  • Linux
    • DNS
      • Как в DNS прописать 301 редирект
      • mail
        • SPF
          • Mirohost
        • _dmarc _domainkey
        • DKIM
        • Прописати ключі DKIM в exim
        • Листи з неіснуючим адресатом
    • Server
      • Zomro
        • pip
        • SSH-доступ по ключу (zomro)
        • venv
        • UnicodeEncodeError: 'latin-1' codec can't encode character
        • Mail Ports
        • Редірект з SSL-сертификатом на транзитному сайті
        • Редірект з SSL за допомогою .htaccess
      • Створення нового користувача з привілеями sudo в Ubuntu
      • SSH-доступ по ключу
      • Часовий пояс в Ubuntu 20.04
      • SSH-підключення командний рядок
      • Як встановити Python 3.9 (нижчу) на Ubuntu 22.04
      • Автозагрузка сервисов в Ubuntu
      • Підвищення безпеки SSH
      • Ubuntu Server
        • Art 01
    • Commands
      • adduser
      • apt
      • cat
      • ls
      • tar
      • ln
      • find
      • chmod
      • chown
      • mv
      • dig
      • ping
      • passwd
      • htpasswd
      • umask
      • usermode
      • history
      • cmp
      • chattr +i
    • Config
      • Keyboard
      • windows
      • My kbdswtch
      • Затримка при завантаженні системи
      • Files
        • /etc/resolv.conf
        • /boot/grub/grub.cfg
        • .config/user-dir.dirs
        • /etc/fstab
      • Як встановити шрифти
    • Apache
      • Встановлення
      • Подключить виртуальный хост
      • Файл .htaccess
        • Установка индексного файла
        • Фільтр IP-адрес
        • ModRewrite
          • Заборонити доступ за User-Agent
          • Перенаправити на іншу сторінку
          • Додавати слеш до адреси
        • Включити SSI
        • Виконувати скрипти CGI
        • Тимчасовий перехід з одного домену на інший
      • SSI
      • SSL
      • Відключити старт Apache з системою
      • Помилки
        • Скрипт не працює
        • CGI-скрипт не виводить кирилицю
        • Could not reliably determine
        • Permissions are missing on a component of the path
        • Symbolic link not allowed or link target not accessible
      • AddType, AddLanguage, AddCharset
    • Nginx
      • 301 редирект з www. та http: на https://(без www.)domain
    • Soft
      • SublimeText
        • Plugins
      • Firefox
      • Gwenview
      • inkscape
      • Double Commander
      • nano
      • mc
        • Знайти потрібний файл
      • meld / diffuse
      • hexedit
      • Kazam - відео з екрану
      • VeraCrypt
      • XnView MP
      • LibreOffice
      • xdotool
      • System Load Monitor
      • Battery Monitor
      • qBittorrent
    • Перетворення .RPM в .DEB
    • Bash
      • Конкатенация строк в Bash
      • Page
    • Файлові часові позначки в Linux: atime, mtime, ctime
    • Права доступу для файлів і каталогів
    • Зміна паролю root
    • Быстро удалить огромное количество файлов в каталоге
    • Як узнати версію Linux?
    • USB Flash ext4
    • Clear Cache
    • Доступ до спільної папки на Windows
    • Віртуальні консолі TTY1–TTY6
    • APT. Заборона оновлення
  • Різне
    • GitBook
    • Банковское округление
    • Ім’я користувача Youtube
  • Hard
    • Hardware
      • Acer Extensa
      • Таймер Feron TM22
      • WD My Book World Edition 2Tb
        • FTP
        • SSH
          • Проблеми
        • SSHFS
      • Canon PIXMA E3340
      • Термометри
    • Auto
      • Акумулятор
    • Electro
    • USB Flash recovery
Powered by GitBook
On this page
  • Клонувати репозиторій
  • Перегляд віддалених репозиторіїв
  • добавить отдаленный репозиторий и присвоить ему имя (shortname)
  • получение изменений с сервера
  • отправка изменений на сервер
  • Сокращенный вывод статуса
  • Коммит
  • Додати в останній коміт файли
  • Просмотр истории коммитов
  • Побачити останні коміти по гілках
  • Возвращение файла к предыдущему состоянию
  • TODO!
  • Примусово оновити віддалений репозиторій:
  • Примусово оновити локальний репозиторій:
  1. Dev

Git

PreviousErrorsNextclone

Last updated 1 year ago

  • [GitHub] - (github)

    • [Jekyll конструктор] - (github/pages/jekyll)

  • Git How To -

    • git fetch - отримує зміни лише з поточної гілки.

    • git fetch --all - отримати всі зміни з усіх гілок.

    • git fetch --all --prune - якщо ви хочете очистити гілки, які більше не існують у віддаленому сховищі

Клонувати репозиторій

Тобто зберегти на комп’ютері репозиторій з github :

git clone git@github.com:NICKNAME/REP.git

Ця команда створить в поточній дерикторії дерикторію 'REP', де і розмістить усі файли проекту.

Назву цієї директорії на локальному компі можна змінити, налаштування репозиторія та сам локальний репозиторій не зламається - головне не втручатися в дочірню директорію .git.

За назвою директорії проекту git не стежить, важливі лише зміни самих файлів у робочій директорії.

А взагалі можна відразу клонувати в потрібну вам директорію, на кшталт

git clone https://github.com/NICKNAME/REP.git some_dir_name

Потім переходимо в неї і працюємо з git:

cd REP
# (або cd some_dir_name)
git status
...

Перегляд віддалених репозиторіїв

git remote
origin

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

git remote -v

origin  git@github.com:olexsyn/e-note.git (fetch)
origin  git@github.com:olexsyn/e-note.git (push)

добавить отдаленный репозиторий и присвоить ему имя (shortname)

git remote add SHORTNAME URL
git remote add e-note git@github.com:olexsyn/e-note.git

Теперь вместо указания полного пути мы можем использовать 'e-note'.

получение изменений с сервера

git fetch origin

Команда git fetch забирает данные в ваш локальный репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент. Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы.

git merge origin/branch_name

Команда git pull, как правило, извлекает (fetch) данные с сервера и автоматически пытается слить (merge) их с кодом, над которым вы в данный момент работаете.

отправка изменений на сервер

Когда вы хотите поделиться своими наработками, вам необходимо отправить их в удаленный репозиторий.

git push REMOTE-NAME BRANCH-NAME

Чтобы отправить вашу ветку main на сервер origin (клонирование обычно настраивает оба этих имени автоматически), вы можете выполнить следующую команду для отправки ваших коммитов:

git push origin main

Сокращенный вывод статуса

-s или --short

git status -s

 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

В выводе два столбца: в левом - статус, в правом - (не)модифицирован

  • ?? - новые неотслеживаемые файлы

  • A· - файлы добавленные в отслеживаемые

  • ·M - модифицирован и НЕ проиндексирован

  • M· - модифицирован и проиндексирован

  • MM - модифицирован, проиндексирован и еще раз модифицирован, т.е. на данный момент у него есть изменения которые попадут в коммит и те которые не попадут

git add file1.ext file2.ext ...
git add --all

Коммит

git commit -m 'Commit comment'

Додати в останній коміт файли

Сначала добавляем в индекс файлы, которые необходимо присоединить к последнему коммиту, затем выполнить команду commit:

git add --all
git commit --amend --no-edit
  • --amend - при использовании этого ключа, на самом деле удаляется последний коммит и создается новый. Поэтому нельзя выполнять --amend для коммитов, которые уже были отправлены на удаленный репозиторий (для которых был выполнен git push).

  • --no-edit - позволяет оставить текущей комментарий к коммиту без изменений

Если необходимо также изменить и комментарий, то:

git commit -m 'New commit comment' --amend

Просмотр истории коммитов

git log
git log --stat

Побачити останні коміти по гілках

git branch -v
  atmo 2def2c2 atmo: end, to main brunch
  iss9 91bf676 iss9 process
* main ff22c5e add local icon

Опції --merged та --no-merged корисні для фільтрування списку гілок залежно від того чи вони були злиті з поточною гілкою.

git branch --merged:
  atmo
* main

Ви бачите atmo в цьому списку тому, що раніше її злили з main. Взагалі, гілки без * із цього списку можна вже видаляти (за допомогою git branch -d), адже ми вже інтегрували ті зміни, тому не втратимо їх.

Наступна команда покаже гілки, які ви не зливали з поточною гілкою:

git branch --no-merged
  iss9

Тут ви бачите свою іншу гілку. Оскільки дана гілка містить роботу, що не зливалася, спроба видалити її за допомогою git branch -d не буде успішною.

git branch -d iss9
  error: The branch 'testing' is not fully merged.
  If you are sure you want to delete it, run 'git branch -D testing'.

Якщо ж ви дійсно впевнені в тому, що гілка вам не потрібна і всі зміни з неї можна втрачати, можна змусити Git це зробити за допомогою параметра -D

i Описані вище опції --merged і --no-merged, якщо не надати команді хеш коміту чи назву гілки як аргумент, покажуть, що, відповідно, було чи не було залите до поточної гілки. Завжди можна додати ще один аргумент, щоб дізнатися про стан злиття відносно якоїсь іншої гілки — немає потреби спочатку на неї переходити. Наприклад, з поточної гілки testing дивимося, що не було залите до гілки main?

git checkout testing
git branch --no-merged master
  topicA
  featureB

TODO!

git commit -m "description" filename.ext - коммит только одного файла

Примусово оновити віддалений репозиторій:

git push -f origin master

! Але слід розуміти, що на сервері затруться всі зміни в файлах, які були зроблені після останнього git push, навіть якщо відправляється лише один файл.

Примусово оновити локальний репозиторій:

Якщо вам байдужі локальні зміни

У цьому випадку ви просто хочете скинути всі незафіксовані локальні зміни. Можливо, ви змінили файл для експерименту, але вам більше не потрібні зміни. Єдине, про що ви дбаєте, — це бути в курсі розробок.

Це означає, що ви додаєте ще один крок між отриманням віддалених змін та їх об’єднанням. Цей крок скине гілку до незміненого стану, що дозволить git mergeпрацювати.

git fetch
git reset --hard HEAD
git merge origin main

Якщо незафіксовані зміни важливі для вас

Є два варіанти. Ви можете закріпити їх, а потім виконати git pull, або ви можете приховати їх.

Сховати означає відкласти зміни на мить, щоб повернути їх пізніше. Точніше, git stash створює комміт, який не відображається у вашій поточній гілці, але все ще доступний Git.

Щоб повернути зміни, збережені в останньому сховищі, скористайтеся git stash pop командою. Після успішного застосування схованих змін ця команда також видаляє сховану фіксацію, оскільки вона більше не потрібна.

Тоді робочий процес може виглядати так:

git fetch
git stash
git merge origin main
git stash pop

За замовчуванням зміни зі сховища стануть поетапними. Якщо ви хочете скасувати їх стадію, скористайтеся командою git restore --staged (якщо використовується Git, новіша за 2.25.0).

Ви просто хочете завантажити віддалені зміни

Останній сценарій трохи відрізняється від попередніх. Скажімо, ви перебуваєте в середині дуже заплутаного рефакторинга. Ані втрачати зміни, ані зберігати їх не можна. Тим не менш, ви все одно хочете мати віддалені зміни, доступні для git diff їх виконання.

Як ви, мабуть, зрозуміли, для завантаження віддалених змін зовсім не потрібен git pull! git fetch буде достатньо.

  • git fetch - отримує зміни лише з поточної гілки.

  • git fetch --all - отримати всі зміни з усіх гілок.

  • git fetch --all --prune - якщо ви хочете очистити гілки, які більше не існують у віддаленому сховищі

Але є і Git Pull Force

Допитливі уми, можливо, вже виявили, що існує така річ, як git pull --force. Однак це зовсім інший звір, ніж той, який представлений у цій статті.

Це може звучати як щось, що допоможе нам перезаписати локальні зміни. Натомість це дозволяє нам отримати зміни з однієї віддаленої гілки до іншої локальної гілки. git pull --force лише змінює поведінку частини, що отримується. Тому це еквівалентно git fetch --force.

Як і git push, git fetch дозволяє нам вказати, з якою локальною та віддаленою гілкою ми хочемо працювати. git fetch origin/feature-1:my-feature означатиме, що зміни у feature-1 гілці з віддаленого сховища будуть видимі в локальній гілці my-feature. Коли така операція змінює існуючу історію, Git не дозволяє це робити без явного --force параметра.

Так само, як git push --force дозволяє перезаписувати віддалені гілки, git fetch --force (або git pull --force) дозволяє перезаписувати локальні гілки. Він завжди використовується з вихідними та кінцевими гілками, згаданими як параметри. Альтернативним підходом до перезапису локальних змін за допомогою git --pull forceможе бути git pull --force "origin/$CURRENT_BRANCH:HEAD".

Книга Pro Git
https://githowto.com/uk
Робота з гілками
подробнее...
https://www.freecodecamp.org/news/git-pull-force-how-to-overwrite-local-changes-with-git/
Возвращение файла к предыдущему состоянию