Как отключить изменения с помощью git

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

Мне нужно взять этот код, удалить его из say, branch 1 и переместить его в правильную ветку, которая является ветвью 2.

Все файлы хранятся в одной папке, что может сделать многое намного проще, я просто не знаю, как это сделать.

например.

Branch 1 { 
  Commit That contains {
     ./path/to/files_that_should_be_here
     ./path/to/files_that_need_to_be_in_branch_2
  }
}

Branch 2 {
   No Commits.
}
4
nl ja de

2 ответы

Если вы не опубликовали свои изменения, самый простой способ сделать это - убить последнюю фиксацию в branch1 (обратите внимание: это полностью уничтожит все, что ввел последний коммит):

git checkout branch1
git reset --hard HEAD~

затем проверить правильность ветви и зафиксировать там изменения.

Если вы опубликовали изменения, вы все равно можете убить последнее коммит, но тогда вам придется git push -force , который у вас может не иметь разрешения, и даже если вы это сделали, это может привести к много горя для других пользователей этого репозитория.

Вместо этого вы должны просто вернуть неправильное изменение:

git revert 

и переделать его в правильной ветке.

5
добавлено
Если вы только один пользователь или другие пользователи мало, и никто не совершил ничего с момента вашего фиксации, и у вас есть разрешение на git push -force , а затем убить последнюю фиксацию и push -force. В противном случае у вас нет выбора, кроме как использовать git revert или другую фиксацию, которая возвращает эффекты вашей плохой фиксации
добавлено автор mvp, источник
Если есть сомнения, не используйте --force. git revert и будьте счастливы. Единственная причина убить коммиты (или перезаписать историю в целом) - это когда плохой коммит содержит конфиденциальную информацию или огромные файлы, которых не должно быть
добавлено автор mvp, источник
Он опубликован, так что бы вы порекомендовали?
добавлено автор Daniel Noel-Davies, источник
будет ли это работать совместно с потоком git?
добавлено автор Daniel Noel-Davies, источник
Будьте осторожны с revert . То, что делает эта команда, - это создать коммит, который отменяет изменения от другой фиксации, точно так же, как если бы вы вручную удалили некоторые файлы или содержимое. В зависимости от заказа ветви объединяются в master, а если есть дальнейшие изменения в восстановленных файлах, вы можете попасть в мастер с отрицательным контентом: без файлов и содержимого, которые были перенесены в ветвь два.
добавлено автор LopSae, источник

переместить фиксацию в правильное использование ветви

git cherry-pick commithash

в ветке, на которую вы хотите переместить фиксацию.

И удалить фиксацию из этой ветви использование

git reset --hard HEAD~1
1
добавлено
вы всегда можете вносить изменения в удаленную ветку с помощью git push origin branchname
добавлено автор amitchhajer, источник
Это не решает проблему, так как сброс происходит только в локальном репозитории. Скопированные и нажатые файлы по-прежнему находятся в одном удаленном репозитории.
добавлено автор LopSae, источник
Git — русскоговорящее сообщество
Git — русскоговорящее сообщество
588 участник(ов)

Обсуждаем git, его фичи, хаки, надстройки и экосистему. Правила: http://telegra.ph/ru-chat-rules-06-19 https://git.wtf/

pro.git::next
pro.git::next
44 участник(ов)

Обсуждение системы контроля версий git и инструментов для работы с ней.