Git - как заставить синхронизироваться удаленно из локального - PullRequest
0 голосов
/ 23 февраля 2019

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

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

У меня была проблема, когда я пытался нажать «Ваша ветвь впереди« источника / мастера »на 3 коммита».Я сделал git reset --hard origin/master, и это решило эту проблему.

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

Я использовал git push origin master -f.Результаты «все в актуальном состоянии», но мне нужно принудительно обновить удаленный репозиторий локальными файлами, потому что я не уверен, действительно ли он обновлен.

Reflog Output:

Luiz@Dell-Sala MINGW64 /c/AppProg/NH (master)
git reflog
5e63abf (HEAD -> master, origin/master) HEAD@{0}: commit: <U+009B>23_02_2019
edc9596 HEAD@{1}: reset: moving to origin/master
1d81b58 HEAD@{2}: commit: <U+009B>22_02_2019
7a4a5cd HEAD@{3}: reset: moving to HEAD
7a4a5cd HEAD@{4}: commit: <U+009B>22_02_2019
f54f851 HEAD@{5}: reset: moving to HEAD
f54f851 HEAD@{6}: commit: tiss 30303
edc9596 HEAD@{7}: commit: novas alteracoes 23_09_2017
07c87c3 HEAD@{8}: commit: commit 14092016
b894041 HEAD@{9}: commit: mudancas em 05092016
555bdae HEAD@{10}: commit: mudancas em 29082016v1
028d122 HEAD@{11}: commit: mudancas em 29082016
c118805 HEAD@{12}: commit: mudanças em 10_08_2016
e34cf58 HEAD@{13}: commit (initial): #1 - Codigo inicial postado

Luiz@Dell-Sala MINGW64 /c/AppProg/NH (master)

1 Ответ

0 голосов
/ 23 февраля 2019

У меня была проблема, когда я пытался нажать «Ваша ветвь впереди« origin / master »на 3 коммита».

Это не «проблема»;это обычный вывод из git (обычно git status), сообщающий, что у вас есть локальные изменения, которые могут быть синхронизированы с удаленным.На данный момент правильная процедура, если вы хотите обновить пульт с вашими локальными изменениями, это

git push

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

Я сделал git reset --hard origin / master, и это решило эту проблему.

То, что вы сказали git сделать здесь, - это синхронизироватьтекущая локальная ветвь (master) с удаленной ветвью - удаление всех локальных изменений.Это удаляет сообщение «ветка впереди» именно потому, что это означает, что больше нечего нажимать.

Из комментариев было предложено использовать reflog, и вы добавили вывод reflog.Теперь то, что показывает этот вывод, является историей каждого перемещения HEAD ref.Обычно это из-за таких вещей, как фиксация, проверка или, в данном случае, сброс.Таким образом, строка

edc9596 HEAD@{1}: reset: moving to origin/master

показывает конкретно, когда вы сбрасываете локальный master, чтобы он соответствовал удаленному отслеживанию ref origin/master, и что вы, вероятно, хотите сделать, это переместить локальный master обратно в состояниедо этого

Сложные вещи, однако, после этого вы сделали еще один коммит, показанный как

5e63abf (HEAD -> master, origin/master) HEAD@{0}: commit: <U+009B>23_02_2019

Прежде чем продолжить, я хочу подчеркнуть - следующие команды основаны на приведенном выше журналевыход.Если с тех пор вы сделали что-то, что добавило бы к журналу рефлексов - например, больше коммитов, проверок и т. Д. - тогда вам нужно перезапустить git reflog и настроить соответствующие команды, которые вы используете.

В частности, ям будет ссылаться на HEAD@2;Это связано с тем, что в выводе reflog HEAD@1 относится к результату reset, поэтому вы хотите перейти на еще на одно состояние назад - и HEAD@2 - это состояние до HEAD@1.

Итак:

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

git branch temp
git reset --hard HEAD@{2}
git rebase --onto master origin/master temp
git checkout master
git merge --ff-only temp
git branch -d temp

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

git reset --hard HEAD@{2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...