Git: оформить предыдущий коммит и работать в ветке, созданной этим коммитом. - PullRequest
0 голосов
/ 28 мая 2020

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

Я пробовал

git checkout 1111111111111111111111111111111111

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

HEAD detached at 1111111
Revert currently in progress.
  (run "git revert --continue" to continue)
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

nothing to commit, working tree clean
Branch 'master' set up to track remote branch 'master' from 'origin'.

Итак, я проверил мастера, чтобы выйти из отсоединенной головы, а затем попытался

git checkout -b 1111111111111111111111111111111111

и получил

Switched to a new branch 1111111111111111111111111111111111

Но когда я создаю свой веб-сайт, он по-прежнему создает версию на главном сервере. Поэтому я пробую

git switch 1111111111111111111111111111111111

и получаю

warning: refname '1111111111111111111111111111111111111111' is ambiguous.
Git normally never creates a ref that ends with 40 hex characters
because it will be ignored when you just specify 40-hex. These refs
may be created by mistake. For example,

  git switch -c $br $(git rev-parse ...)

where "$br" is somehow empty and a 40-hex ref is created. Please
examine these refs and maybe delete them. Turn this message off by
running "git config advice.objectNameWarning false"
fatal: cannot switch branch while reverting
Consider "git revert --quit" or "git worktree add".

Итак, я пробую это без проблем

git config advice.objectNameWarning false

А затем я пробую

git switch 1111111111111111111111111111111111
warning: refname '1111111111111111111111111111111111' is ambiguous.
fatal: cannot switch branch while reverting
Consider "git revert --quit" or "git worktree add".

И я думаю, что все еще работаю в основной ветке, код Visual Studio по-прежнему говорит, что я нахожусь в основной ветке внизу

enter image description here

Я даже не вижу свою доступную ветку

enter image description here

1 Ответ

1 голос
/ 28 мая 2020

Когда вы запускали git checkout -b с идентификатором объекта, вы создали новую ветвь, назвавшую то же самое, что и идентификатор объекта, поскольку первый аргумент после -b - это имя ветки. Создание веток с таким именем - не лучшая идея, как вам говорит Git.

Сначала удалите ветку, которую вы создали, используя git branch -d (или git branch -D) и передав ей 40- шестнадцатеричное имя символа, которое вы передали в git checkout -b.

Как только вы это сделаете, лучший способ создать новую именованную ветку из ревизии - запустить git checkout -b NEW-BRANCH-NAME REVISION. Обратите внимание, что ревизия идет после нового имени ветки. Затем вы можете отправить sh эту ветку на сервер, чтобы протестировать ее и построить там. Если вы хотите повторно использовать ту же ветвь для следующего теста, используйте git checkout -B вместо git checkout -b, что перезапишет ветвь, а затем принудительно перенаправит ветвь на sh на сервер.

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

...