Git push, git pull, git fetch

4 ответа

Лучший ответ

Принудительно :

52

Alan Haggai Alavi
14 Апр 2011 в 18:29

Я использовал EGit, и я тоже столкнулся с этой проблемой. Просто попробовал текущую ветку, и это сработало.

7

Nguyen Minh Binh
19 Июл 2013 в 03:39

Возможно, вам придется сделать , который МОЖЕТ автоматически объединять данные за вас. Затем вы можете совершить еще раз. Если у вас есть конфликты, вам будет предложено их разрешить.

Имейте в виду, что вы должны указать, из какой ветки вытаскивать, если вы не обновили свой gitconfig, чтобы указать …

Например:

14

Tony
14 Апр 2011 в 18:17

Если вы отправите фиксацию на сервер, а затем перезапишите ее локально (с помощью , , или любое другое изменение истории), а затем отправил этот перезаписанный коммит обратно на сервер, вы облажался с любым, кто тянул. Вот пример; скажем, вы зафиксировали A и отправили его на сервер.

-*-*-A <-- master

-*-*-A <-- origin/master

Теперь вы решаете переписать A, как вы упомянули, сбросив и повторно зафиксировав

Обратите внимание, что при этом остается болтающаяся фиксация A, которая в конечном итоге будет удалена сборщиком мусора, поскольку она недоступна

-*-*-A
    \
     A' <-- master

-*-*-A  <-- origin/master

Если кто-то другой, скажем, Фред, снимет с сервера, пока вы это делаете, у него будет ссылка на A, с которой он может начать работу:

-*-*-A' <-- master

-*-*-A  <-- origin/master

-*-*-A-B <-- fred/master

Теперь, если бы вы могли подтолкнуть свой A ‘к origin / master, что привело бы к созданию не-быстрой перемотки вперед, у него не было бы A в его истории. Так что, если бы Фред снова попытался потянуть, ему внезапно пришлось бы выполнить слияние, и он повторно представил бы фиксацию A:

-*-*-A' <-- master

-*-*-A  <-- origin/master

-*-*-A-B-\ 
    \     * <-- fred/master
     A'--/

Если Фред это заметит, то он сможет выполнить перебазирование, что предотвратит повторное появление коммита A. Но он должен это заметить и не забыть сделать это; и если у вас есть более одного человека, который вытащил A, им всем придется перебазировать, чтобы избежать дополнительной фиксации A в дереве.

Итак, как правило, не рекомендуется изменять историю репо, из которого извлекают другие люди. Если, однако, вы знаете, что никто другой не использует это репо (например, это ваше собственное частное репо, или у вас есть только один другой разработчик, работающий над проектом, с которым вы можете легко координировать свои действия), тогда вы можете принудительно обновить, запустив:

Или

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

Возможно, принудительное нажатие полностью отключено с помощью параметра конфигурации . Эта опция включена по умолчанию для общих репозиториев. В этом случае, если вы действительно, действительно хотите принудительно выполнить push, лучший вариант — удалить ветку и заново создать ее с помощью . Однако опция включена по причине, описанной выше; в общем репозитории, это означает, что теперь каждый, кто его использует, должен убедиться, что они перебазируются на новую историю.

В общем репозитории, как правило, лучше просто размещать новые коммиты сверху, которые исправят любую вашу проблему; вы можете использовать для создания коммитов, которые отменят изменения предыдущих коммитов .

175

Brian Campbell
24 Июн 2016 в 14:35

Git fetch

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

Синхронизация с командой git fetch origin

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

Это отобразит ветки, которые уже были загружены:

ale8fb5..45e66a4 main -> origin/main

ale8fb5..9e8ab1c develop -> origin/develop

*  some-feature -> origin/some-feature

Решение ошибок, не связанных с перемоткой вперед в github

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>

Решение ошибок, не связанных с перемоткой вперед в github

Ссылки

1.http://www.linuxidc.com/Linux/2012-04/58985.htm

2.http://ihower.tw/blog/archives/2620

3.http://hi.baidu.com/lettoo/blog/item/e2e7f30fec72bdf6ab645789.html

текст

Чтобы научиться использовать git, вы можете обратиться к литературе 3, но на последнем этапе операции, когда вы хотите загрузить код в git, возникает следующая ошибка:

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

Я проверил некоторую информацию в Интернете. См. Содержимое в ссылке 1. Я знаю, что, поскольку содержимое в git такое же, как в отделе местного содержимого, вам нужно сначала получить, затем объединить и, наконец, загрузить push. Но он не будет работать. Позже будет сказано, что это можно сделать принудительным толчком, как показано на рисунке ниже:

ПроверьтеПринудительная перезапись существующих веток (изменения могут быть потеряны), Затем нажмите Загрузить, загрузка прошла успешно.

posted @ 2012-05-29 14:43 xwdreamer читать(…) Комментарии () редактировать

Интеллектуальная рекомендация

1. Для реальных сигналов (для понимания): A (ω) является соотношением амплитуды выходного сигнала и амплитуды входного сигнала, называемого частотой амплитуды. Φ (ω) — это разница межд…

Один. вести Многие люди задавали некоторые вопросы о создании проекта Flex + LCDS (FDS) в сообщениях и группах. Из-за операции ее трудно четко объяснить, поэтому я написал простой учебник (я обещал эт…

package com.example.phonehttp; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.ScrollView; import android.widget.TextView; public class MainActi…

Он предназначен для реализации подкласса того же родительского класса с родительским классом. Полиморфизм Один и тот же ссылочный тип использует разные экземпляры для выполнения разных операций; Идея …

тема: Объедините два упорядоченных слоя в новый заказанный список и возврат. Новый список состоит из всех узлов двух связанных списков, данных сплавным. Пример: Анализ: два связанных списка состоит в …

Вам также может понравиться

D. Самая ценная строка Пример ввода 2 2 aa aaa 2 b c Образец вывода aaa c На самом деле, будучи задетым этим вопросом, вы должны быть осторожны. После инвертирования строки, если две строки имеют один…

Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surro…

calc () может быть очень незнакомым для всех, и трудно поверить, что calc () является частью CSS. Поскольку он выглядит как функция, почему он появляется в CSS, поскольку это функция? Этот момент такж…

Основываясь на дереве регрессии, сформированном CART, а также на предварительной и последующей обрезке дерева, код выглядит следующим образом:…

Откат Обновление в режиме онлайн с версии Centos (CentOS Linux версии 7.3.1611 (Core) до CentOS Linux версии 7.5.1804 (Core)) # ошибка соединения yum-ssh после обновления yexpected key exchange group …

2 ответа

Лучший ответ

Предполагая, что PR означает Pull Request, это именно то, что вы должны увидеть — все коммиты с момента последнего клонирования хранилища. Как правило, рекомендуется сохранять эти коммиты, так как они расскажут все, что и как изменилось.

Однако, если это случай «чрезмерной фиксации» в результате фиксации всякий раз, когда что-то изменилось, а не когда задача или проблема были решены, то вы, безусловно, можете раздавить / перебазировать ваши коммиты в одну. Подробности смотрите ниже

  • SO: Есть ли способ раздавить несколько коммитов не в интерактивном режиме?
  • SO: Сквош мой последний X коммитов вместе с помощью Git
  • Git: Squash ваши последние коммиты в один

-1

Community
23 Май 2017 в 12:24

Ваш рабочий процесс не выглядит правильным. Есть два варианта, как вы можете внести свой вклад:

  1. У вас есть разрешение на запись в репозиторий верхнего уровня. Затем вам нужно просто клонировать вышестоящий репозиторий, извлечь новую ветку и зафиксировать ваши изменения там. Когда вы закончите, вы отправляете свою новую ветку в восходящий fix / my-fix` и открываете PR внутри этого репо.

  2. У вас нет прав на запись, то есть вы не можете выдвигать какие-либо ветви в репозиторий верхнего уровня. Сначала вы должны создать приватную ветвь хранилища, а затем клонировать свою вилку на свой компьютер. Также теперь вы должны создать новую ветку для вашего исправления или добавления функции. Получив это, вы отправляете ветку в личный репозиторий . Эта часть немного сбивает с толку, но Github заставит ее работать. После этого вы можете открыть PR в исходном репозитории в своем апстриме. Для этого перейдите к своему профилю GitHub и вашему репозиторию и начните PR с вашей новой веткой. Вы должны быть в состоянии выбрать основной канал в качестве цели слияния для вашей новой ветви.

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

1

Potaito
9 Янв 2019 в 16:13

11 ответов

Лучший ответ

Сначала потяните изменения:

138

trejder
2 Июл 2013 в 08:03

Обнаружена та же проблема, чтобы решить ее, выполните следующие команды .

Вы должны сначала создать репозиторий на github.

blackFoxCoder
24 Дек 2017 в 22:16

Если вы находитесь в нужной ветке, вы можете сделать это:

CodeChops
23 Июн 2016 в 21:10

У меня была такая же проблема. Я решил с

Andrea Perdicchia
15 Июн 2013 в 10:19

У меня сработало использование опции .

git pull —rebase

Потом нажимаем на репо.

git push

Например.

1

CyberDemic
6 Окт 2019 в 00:14

(Одно) Решение для Netbeans 7.1: попробуйте потянуть. Вероятно, это тоже не удастся. Теперь загляните в журналы (обычно они теперь отображаются в IDE). Есть одна / несколько строк:

«Не удалось извлечь из-за этого файла:»

Найдите этот файл, удалите его (предварительно сделайте резервную копию). Обычно это файл .gitignore, поэтому вы не будете удалять код. Повторите нажатие. Теперь все должно работать нормально.

1

Sliq
7 Авг 2012 в 11:41

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

После

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

5

hardmooth
22 Окт 2013 в 14:47

Вы можете добавить к команде —force-with-lease , и она будет работать.

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

Дополнительную информацию см. здесь.

6

igorjosesantos
20 Июл 2018 в 17:22

Я столкнулся с той же ошибкой, просто добавьте к команде «—force» , работает

16

dwo
10 Окт 2013 в 10:21

Перед тем, как нажимать, выполните git pull с опцией rebase. Это позволит получить изменения, которые вы сделали онлайн (в своем источнике), и применить их локально, а затем добавить свои локальные изменения поверх них.

Теперь вы можете нажать на удаленный

Для получения дополнительной информации см. объяснение Git rebase и Глава 3.6 Ветвление Git — Ребазинг.

23

trejder
2 Июл 2013 в 08:03

Добавьте —force в свою командную строку, если вы уверены, что хотите нажать. Например. используйте (я рекомендую командную строку, поскольку вы найдете гораздо больше поддержки от других пользователей с помощью командной строки. Также это может быть невозможно с SmartGit.) См. этот сайт для получения дополнительной информации: http://help.github.com/remotes/

84

Matt
16 Ноя 2011 в 16:24

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

Чтобы протолкнуть некоторые изменения в удаленный репозиторий, этот репозиторий должен, прежде всего, содержать некоторые коммиты в локальной системе. Поэтому в этом разделе мы сначала создадим некоторые изменения в репозитории. Во-вторых, мы зафиксируем эти изменения и, наконец, отразим их в удаленном репозитории.

Перед созданием изменений в репозитории убедитесь, что вы выполнили следующие операции:

  • У вас раздвоенный репозитория на GitHub.
  • Вы клонировали один и тот же репозиторий на локальную машину.

В качестве хорошей практики сначала проверьте, что у вас есть чистый репозиторий с помощью команды git status (никаких ожидающих изменений для фиксации).

После выполнения команды git status появятся следующие строки:

On branch master: означает, что в данный момент мы находимся в главной ветви. Поскольку других ветвей пока нет, мы по умолчанию находимся в главной ветви.

Your branch is up to date with origin/master: Origin — это имя удаленного репозитория, которое мы дали при подключении локального репозитория к удаленному репозиторию.

Последовательность действий

  1. Перечислите все файлы с командой ls в репозитории.

Так как существует только один файл (README.md это всего лишь инструкция), давайте внесем некоторые изменения в его содержание.

  1. Откройте файл с помощью вашего любимого редактора и внесите в него любые изменения.
  2. Мы изменили файл на следующий код.
  1. Добавьте внесенные изменения в промежуточную область и зафиксируйте их.

Примечание: GitHub и Git распознают любые изменения только через коммиты (commits). Если пользователь не зафиксировал изменения и пытается протолкнуть их на GitHub, он отобразит сообщение “Everything is up-to-date”

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

git push origin master

  1. Пользователь получает приглашение предоставить учетные данные с помощью GitHub в качестве части безопасности. Введите свои учетные данные и нажмите на кнопку входа в систему.
  1. Как только пользователь получит одобрение и изменения объединятся, он получит следующее сообщение в Git Bash.

Примечание: последние две строки выглядят следующим образом:

https://github.com/harishrajora805/ToolsQA.git: URL-адрес репозитория, который отражает изменения.

1в4522а..285f559: показывает хэш-значение обеих ветвей. Таким образом, хэш-значение конечного коммита, отраженного на GitHub, равно 285f559.

master -> master: строка master — > master показывает исходную ветвь, из которой происходит слияние с целевой ветвью. В приведенном выше сценарии обе ветви являются главными.

Строка Writing Objects: 100% имеет важное значение. В Git можно сказать, была ли команда push выполнена успешно или нет, только взглянув на эту строку

Если она показывает 100%, то все изменения успешно перенесены в облако.

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

git push — вносим изменения в удаленный репозиторий

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

Отправляет свои изменения в удаленную ветку, созданную при клонировании по
умолчанию:

Отправляет изменения из ветки master в ветку experimental удаленного репозитория:

В удаленном репозитории origin удаляет ветку experimental:

Отправляет в удаленную ветку master репозитория origin (синоним репозитория по
умолчанию) ветки локальной ветки master:

Отправляет метки в удаленную ветку master репозитория origin:

Изменяет указатель для удаленной ветке master репозитория origin (master будет
такой же как и develop):

Добавляет ветку test в удаленный репозиторий origin, указывающую на коммит ветки
develop:

Подмодули

Клонирование репозитория с подмодулями

При клонировании репозитория вам необходимо инициализировать и обновить подмодули:

Запуск данной команды эквивалентен запуску команды:

после обычного клонирования репозитория

Обновление подмодулей

Подмодуль ссылается на конкретную коммит в другом репозитории. Чтобы получить
точное состояние всех подмодулей необходимо запустить:

Для получения состояния последнего коммита всех подмодулей необходимо выполнить
следующую команду:

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

Эта команда просто обновляет локальную рабочую копию. При запуске команды git status
каталоги подмодулей будут показаны изменёнными. Чтобы обновить репозиторий необходимо
зафиксировать изменения:

Для получения состояние последнего коммита конкретного подмодуля необходимо использовать команду:

Добавление подмодулей

В текущий проект можно включить другой репозиторий Git в качестве папки, отслеживаемый Git:

После этого необходимо добавить и зафиксировать новый файл .gitmodules. В нём описано
какие подмодули следует клонировать при запуске команды git submodule update

4 ответа

Лучший ответ

Сделай первым

Что случилось, так это то, что на пульте дистанционного управления были более свежие изменения, чем в вашей ветке.

Поэтому, прежде чем вы сможете вносить изменения, вам необходимо сначала получить и объединить изменения на пульте дистанционного управления.

Вы можете сделать это, выполнив , а затем:

, а затем

Или

Где ваша ветка является главной, или имя вашей ветки (кажется, в вашем случае, я думаю)

Как только это будет сделано (и все конфликты будут разрешены), вы можете сделать

36

Michael Durrant
13 Мар 2015 в 10:42

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

Я лично избегаю большинства проблем, связанных с git on stack, потому что я всегда привязываю свои действия команды git к указанной выше последовательности.

Я создал аббревиатуру, чтобы убедиться, что не забываю, я надеюсь, что то же самое может быть полезно для читателя, а именно:

Мой способ запомнить git push, add, commit, pull:

Таким образом, не забудьте «git» пакет, а затем «push».

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

Изменения объединяются с последними изменениями из your_intended_branch, это в основном объединяет изменения, которые вы зафиксировали, но не выдвинули. Когда все пойдет хорошо, просто нажмите:

Nirmal
30 Янв 2017 в 17:13

Сделайте Git pull. Затем он перенесет последние изменения кода из удаленной ветки в ваш локальный. тогда вы можете продвигать свои изменения.

Dkr
9 Май 2014 в 13:15

Это в основном потому, что когда ты

Из ветки выполняются две операции: выборка и слияние. Теперь, если у вашего локального пользователя есть какие-то изменения, тогда git не позволит вам отправить его до того, как вы зафиксируете свои изменения.

Также эта проблема возникает, если на пульте дистанционного управления есть изменения, которые до сих пор не извлекаются локально и не объединяются, поэтому вам нужно снова потянуть, а затем нажать его. Ответьте, если это не решит проблему

2

Bijendra
2 Сен 2012 в 16:05

Сложный вариант: починить за кем-то

Иногда бывает, что сделали либо не вы, либо кто-то принял пачку Pull Request’ов в то время, пока вы веселились со своими экспериментами.

Тяжесть ситуации в том, что вы не можете просто сделать , поскольку у вас локально нет коммитов, которые нужно восстановить (и у вас не получиться скачать их с помощью ).

Стоп! Без паники! Зайдите в чат, покайтесь, скажите, чтобы никто ничего не делал — вам понадобится время, чтобы всё вернуть.

Здесь нам поможет тот факт, что GitHub не удаляет коммиты, которые больше не принадлежат ни к какой ветке. Но, что усложняет задачу, не даёт их и стянуть с командной строки.

Если force-пуш сделали вы, то просто возьмите хэш коммита, который был в ветке до вас (как и в прошлом пункте). Если не вы, то можно зайти в ленту событий GitHub’а (на главной странице, в случае, если вы подписаны на репозиторий) и посмотреть, кто последний коммитил в эту ветку:

Теперь через консоль можно получить недостающие коммиты:

$ git fetch
From github.com:org/repo
 *       master-before-force-push -> origin/master-before-force-push

и теперь задача сводится к предыдущей:

Если наработки в вашем е ещё нужны, то лучше отребейзить свои коммиты поверх него:

КАК ИСПРАВИТЬ: ошибка: не удалось отправить некоторые ссылки на | Создайте удаленный репозиторий GitHub за 2 минуты

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

Теперь я хочу отправить свои изменения и запустить следующую команду

дает мне следующую ошибку:

Что делать, чтобы избавиться от ошибки?

P.S. : Я избегаю использования вариант по возможности.

Связанный: Что такое быстрая перемотка вперед в Git ?.

Похоже, кто-то разместил новые коммиты между вашими последними а также . В этом случае вам нужно повторить свои шаги и переустановить Еще один раз.

После Рекомендую изучить ситуацию с .

Что делать, чтобы включить git pull origin master: master, который по умолчанию должен объединяться. Это конфликт слияния или нет. Это единственный вопрос, который задают.

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

Это решает мою проблему: когда я зафиксировал свой код, я выполнил перебазирование (слишком поздно, изменения уже были, следует сделать это до фиксации). Тогда даже конфликта не было, я не мог толкнуть. После применения вышеуказанной магии это сработало. Спасибо.

У меня была такая проблема! Я пробовал: git fetch + git merge, но не решил! Я пробовал: git pull, но тоже не решил

Затем я попробовал это и решил свою проблему (аналогично ответу инженера):

  • 7 Это меня напортачило, я подтолкнул вещи прямо к мастеру и продвинул развертывание всего дня … и все в ярости …. УДИВИТЕЛЬНЫЕ СОВЕТЫ!
  • 6 Вероятно, вы хотите вкратце объяснить, что вы делаете, прежде чем давать кому-то опасный инструмент.

У меня была аналогичная проблема, и я решил ее:

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

Я опаздываю на вечеринку, но я нашел несколько полезных инструкций на странице справки github и хотел бы поделиться ими здесь.

Иногда Git не может внести изменения в удаленный репозиторий без потери коммитов. Когда это произойдет, ваш толчок будет отклонен.

Если другой человек отправил в ту же ветку, что и вы, Git не сможет отправить ваши изменения:

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

Или вы можете просто использовать выполнить обе команды одновременно:

попробуйте эту команду

т.е.

В моем случае это сработало, когда другие — нет. Иногда вам просто нужно сказать git -f -u

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: