Git, Как reset origin/master для фиксации?

I reset мой локальный мастер для совершения этой команды:

git reset --hard e3f1e37

когда я ввожу команду $ git status, терминал говорит:

# On branch master
# Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.

#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean

Так как я хочу reset origin/header, я проверяю на начало/мастер:

$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2aef1de... master problem fixed for master. its okay now.

и reset заголовок с помощью этой команды:

$ git reset --hard e3f1e37
HEAD is now at e3f1e37 development version code incremented for new build.

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

$ git commit -m "Reverting to the state of the project at e3f1e37"
# HEAD detached from origin/master
nothing to commit, working directory clean

Наконец, я выхожу к моему локальному хозяину.

$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Так как я reset глава источника/хозяина, я ожидаю, что локальное и начальное должно быть в одном направлении, но, как вы видите, git говорит, что мой локальный/мастер находится за начальником/мастером на 7 коммитов.

Как я могу исправить эту проблему? То, что я ищу, - это глава локального/главного и начального/основного пункта для того же коммита. Следующее изображение показывает, что я сделал. Спасибо.

enter image description here

Ответ 1

Разделы

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

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

git checkout master
git reset --hard e3f1e37
git push --force origin master
# Then to prove it (it won't print any diff)
git diff master..origin/master

Ответ 3

Поскольку у меня была похожая ситуация, я подумала, что поделюсь своей ситуацией и как эти ответы помогли мне (спасибо всем).

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

Однажды поздно вечером, в параноидальном страхе потерять свой прогресс из-за аппаратного сбоя или чего-то другого в эфире, я решил подтолкнуть мастера к началу. Позже я продолжал вносить поправки в свою локальную основную ветку, и когда я решил, что пришло время снова нажать, я столкнулся с различными основными ветвями и обнаружил, что не могу изменить origin/upstream (да!), Как я могу локальные ветки разработки.

Поэтому я не проверял мастер локально, потому что уже был после коммита. Мастер не изменился. Мне даже не нужно было сбрасывать --hard, мой текущий коммит был в порядке.

Я просто принудительно выдвинул к исходной точке, даже не указав, какой коммит я хотел навязать мастеру, так как в этом случае это независимо от того, на чем находится HEAD. git diff master..origin/master поэтому не было никаких различий и вот оно. Все исправлено. Спасибо! (Я знаю, я новичок, пожалуйста, прости!).

Так что, если вы уже в порядке с вашей основной веткой локально, просто:

git push --force origin master
git diff master..origin/master

Ответ 4

Предполагая, что ваша ветка называется master и здесь, и удаленно, и что ваш пульт называется origin, вы можете сделать следующее:

git reset --hard <commit-hash>
git push -f origin master

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