Подтвердить что ты не робот

Хотите изменить моего хозяина на более старую фиксацию, как я могу это сделать?

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

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

Как я могу это сделать?

4b9b3361

Ответ 1

Если вы хотите сделать это и верните мастер к предыдущему фиксации:

git checkout master~1            # Checkout previous commit on master
git checkout -b new_master       # Create branch for new master
git branch -D master             # Delete old master
git branch -mv new_master master # Make new_master master

В качестве альтернативы:

git reset --hard master~1        # Reset current branch to one commit ago on master

Ответ 2

Твой вопрос непонятен. Я думаю, что вы просите:

git push -f origin $old_commit_id:master

Что это будет? Он нажимает $old_commit_id commit на origin как новый заголовок ветки origin s master.

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

Ответ 3

использовать git reset --hard <old commit number>

он будет reset HEAD для этого старого фиксации.

Кроме того, вам нужно использовать git push -f origin для изменения удаленного репо.

Ответ 4

Вы можете просто git checkout <commit-id> выполнить все, что вам нужно, затем git checkout master, чтобы вернуться к новому коду.

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

git checkout -b my_release <commit-id>
... prepare code for release ...
... release code ...
git checkout master
git merge my_release

Кроме того, я не могу рекомендовать git flow достаточно. Это делает все это довольно просто.

Ответ 5

Предполагая граф фиксации следующим образом:

| (A) ---------> (B) ----------> (C)
|                                 ^
|                              (master)

Вы хотите сначала проверить master и создать ветвь, которая указывает, где находится master:

git checkout master
git branch pointer master

Теперь должно выглядеть так:

| (A) ---------> (B) ----------> (C)
|                                 ^
|                       (HEAD, master, pointer)

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

git reset master~1

Теперь master следует переместить назад на один пробел, но ветвь pointer все еще находится в последней фиксации:

| (A) ---------> (B) ----------> (C)
|                 ^               ^
|           (HEAD, master)    (pointer)

На этом этапе вы можете нажать master на удаленный или где бы то ни было, а затем быстро переместить его обратно в ветвь pointer. Вы можете убить ветвь pointer в этой точке:

git push origin master
git merge --ff-only pointer
git branch -D pointer

Финал:

| (A) ---------> (B) ----------> (C)
|                 ^               ^
|         [ origin/master ]    (HEAD, master)

Ответ 6

Чтобы перейти к предыдущей версии:

git checkout <version hash>

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

git commit --amend

Чтобы вернуться к мастеру:

git checkout master

Ответ 7

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

git checkout 307a5cd        # check out the commit that you want to reset to 
git checkout -b fixy        # create a branch named fixy to do the work
git merge -s ours master    # merge master history without changing any files
git checkout master         # switch back to master
git merge fixy              # and merge in the fixed branch
git push                    # done, no need to force push!

Готово! Замените 307a5cd любым коммитом, который вы хотите в своем репо.

(Я знаю, что первые две строки можно объединить, но я думаю, что это делает менее понятным, что происходит)

Вот это графически:

c1 -- c2 -- c3 -- c4 -- c2' -- c5 ...
        \              /
         '------------'

Вы эффективно удаляете c3 и c4 и возвращаете свой проект обратно в c2. Тем не менее, c3 и c4 по-прежнему доступны в истории вашего проекта, если вы когда-нибудь захотите увидеть их снова.