Поиск по сайту:

Истина не нуждается в защите, а мир — в завоевании (Авессалом Подводный).

Как использовать Git Force Pull

3 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
17 мая 2021
Как добавить Git Remote
Файлы и папки Git любого проекта git могут совместно использоваться несколькими пользователями git, которые работают в команде. Когда несколько пользователей пытаются работать с одним и тем же файлом или папкой, возникает конфликт. Предположим, когда два пользователя работают с одним и тем же файлом репозитория, и если один пользователь изменяет файл после модификации, выполненной другим пользователем, то изменение, сделанное первым пользователем, будет потеряно при последнем обновлении. Эту проблему можно решить вручную. Пользователь должен выполнить команду git force pull для перезаписи изменений в локальном репозитории, не влияя на изменения, сделанные в локальном репозитории, которые не были отправлены. Команда `git pull` не может решить эту проблему. В этой статье показан способ использования git force pull с помощью команд git fetch и git reset.

 

Предпосылки:

Установите GitHub Desktop

GitHub Desktop помогает пользователю git графически выполнять задачи, связанные с git. Вы можете легко загрузить последнюю версию этого приложения для Ubuntu с github.com. Вы должны установить и настроить это приложение после загрузки, чтобы использовать его. Вы также можете проверить руководство по установке GitHub Desktop в Ubuntu, чтобы правильно узнать процесс установки.

 

Создайте учетную запись GitHub

Вам потребуется создать учетную запись GitHub, чтобы проверить команды, используемые в этой статье.

 

Создайте локальный и удаленный репозиторий

Вам необходимо создать локальный репозиторий и опубликовать репозиторий на удаленном сервере, чтобы протестировать команды, используемые в этой статье.

 

Перезаписать локальные изменения для принудительного git pull:

Команда `git fetch –all` загружает все содержимое удаленного репозитория в локальный репозиторий, но не объединяет содержимое с локальным репозиторием. Если после выполнения команды fetch команда `git reset` выполняется с параметром –hard, то все соответствующие файлы и папки локального репозитория будут перезаписаны содержимым удаленного репозитория. Все незафиксированные и подтвержденные локальные изменения, которые не были отправлены, будут удалены для параметра –hard. Эта проблема была описана в этой части статьи с использованием локального репозитория с именем python, опубликованного ранее на удаленном сервере.

Читать  Исправление ошибки сломанной трубы с помощью SSH-соединения

Откройте файл basic.py из удаленного репозитория, чтобы проверить его содержимое. На следующем изображении показано, что файл содержит четыре строки сценария для сложения двух чисел.

Как использовать Git Force Pull

 

Принудительно git pull для незафиксированных изменений:

Теперь откройте файл basic.py локального репозитория в любом текстовом редакторе и измените файл следующим образом. Сохраните файл и выйдите из редактора.

print («Сложение трех чисел»)
a = 10
b = 20
c = 30
print (a + b + c)

 

Выполните следующие команды, чтобы добавить измененный файл basic.py в локальный репозиторий и проверить статус репозитория.

$ git add basic.py
$ git status

 

После выполнения команды появится следующий вывод. Вывод показывает, что задача еще не зафиксирована.

Выполните следующие команды, чтобы проверить содержимое файла basic.py перед извлечением содержимого удаленного репозитория и проверить содержимое файла basic.py после принудительного извлечения.

$ cat basic.py
$ git fetch --all
$ git reset --hard origin/main
$ cat basic.py

 

Следующие выходные данные показывают, что содержимое файла basic.py было перезаписано содержимым файла basic.py удаленного сервера, а измененное содержимое было потеряно.

 

Принудительно git pull для зафиксированных изменений:

Снова откройте файл basic.py локального репозитория в любом текстовом редакторе и измените файл следующим образом. Сохраните файл и выйдите из редактора.

print(«Вычитание двух чисел»)
a = 50
b = 20
print(a - b)

 

Выполните следующие команды, чтобы добавить измененный файл basic.py в локальный репозиторий, зафиксировать задачу и проверить статус репозитория.

$ git add basic.py
$ git commit -m "basic.py обновил статус"
$ git

 

Следующий вывод показывает, что измененный файл basic.py добавлен и зафиксирован с сообщением о фиксации. Текущее рабочее дерево теперь чистое.

Выполните предыдущие команды еще раз, чтобы проверить, как команда `git reset` работает для зафиксированной задачи.

$ cat basic.py
$ git fetch --all
$ git reset --hard origin/main
$ cat basic.py

 

Следующий вывод показывает, что содержимое удаленного файла снова перезаписало содержимое локального файла. Итак, команда `git reset` работает одинаково как для зафиксированных, так и для незафиксированных задач.

 

Сохраните локальные изменения перед принудительным использованием git pull:

Проблему перезаписи можно решить, создав новую ветку. Зафиксируйте все изменения в репозитории перед запуском команд pull. Снова откройте файл basic.py локального репозитория в любом текстовом редакторе и измените файл следующим образом. Сохраните файл и выйдите из редактора.

print(«Умножить два числа»)
a = 10
b = 20
print(a * b)

 

Выполните следующие команды, чтобы проверить список веток, переключиться на новую ветку и проверить содержимое файла basic.py после выполнения команд pull.

$ git branch
$ git checkout -b new-branch
$ git fetch –all
$ git reset --hard origin/main
$ cat basic.py

Следующий вывод показывает, что содержимое файла basic.py было перезаписано для новой ветки.

Читать  Как скачать файл с Github

Теперь выполните следующие команды, чтобы проверить содержимое файла basic.py после переключения на основную ветку.

$ git checkout main
$ cat basic.py

 

Следующий вывод показывает, что содержимое файла basic.py не изменилось.

 

Заключение:

Проблема принудительного извлечения репозитория git и способы решения этой проблемы были объяснены в этой статье с использованием локального и удаленного демонстрационного репозитория. Но это решение не будет работать для незафиксированных изменений локального репозитория. Итак, вы должны зафиксировать все изменения или запустить команду `git stash` перед тем, как принудительно вытащить репозиторий git.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться в соц. сетях:
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close