Git, как сбросить origin / master на фиксацию?


я сбросил свой локальный мастер на фиксацию с помощью этой команды:

git reset --hard e3f1e37

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

# 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

так как я хочу сбросить origin / header, я проверяю origin / master:

$ 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.

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

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

затем я попытался добавить фиксацию в origin / header, что мне не удалось.

$ 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)

поскольку я сбрасываю голову origin/master, я ожидаю, что local и origin должны быть в одном направлении, но, как вы видите, git говорит, что мой local/master отстает от origin / master на 7 коммитов.

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

3 167

3 ответа:

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

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

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

решение найдено здесь помог нам обновить master до предыдущей фиксации, которая уже была нажата:

git checkout master
git reset --hard e3f1e37
git push --force origin e3f1e37:master

ключевым отличием от принятого ответа является хэш фиксации "e3f1e37:" перед мастером в команде push.

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

ужас!) как я могу местные ветви развития.

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

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

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

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