Git: Как я могу изменить коммит сервера?
Я уже установил некоторые коммиты на моем git-сервере на EC2, а не на github.
Как я могу изменить эти коммиты на git сервере?
Операция как удалить коммит, как перебазирование, изменить сообщение коммита
Является ли это возможным?
Спасибо.
2 ответа
Вы можете сделать почти все с помощью принудительного толчка. Измените ваше локальное дерево на то, что вы хотите, и git push -f
и он заменит дерево на сервере тем, что у вас есть локально. Стоит отметить, что это вызовет проблемы с любыми другими репозиториями, которые тянут дерево, которое вы только что заменили.
Если вы хотите редактировать историю удаленной ветки деструктивно (например, rebase
/amend
), внесите свои изменения локально, а затем сделайте git push --force
, Иногда это не работает (администраторы хранилища могут отключить эту функцию); в этом случае вы можете попробовать удалить удаленную ветку с помощью git push origin :my_branch
а затем снова нажать его git push origin my_branch
, В противном случае вы можете использовать git revert
, который является рекомендуемым способом, если вы работаете в команде (практическое правило гласит, что опубликованная история не должна изменяться).
Вот пример (с использованием этого репозитория Github):
$ touch SOMETHING
$ emacs SOMETHING
$ git add SOMETHING
$ git ci -m SOMETHING
[master d14aaa0] SOMETHING
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 SOMETHING
$ git push
Counting objects: 8, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 611 bytes, done.
Total 6 (delta 3), reused 0 (delta 0)
To git@github.com:23Skidoo/ghc-parmake.git
53f836a..d14aaa0 master -> master
$ git reset --hard "HEAD~"
HEAD is now at 7b2dc96 TODO update.
$ git push --force
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:23Skidoo/ghc-parmake.git
+ d14aaa0...7b2dc96 master -> master (forced update)
Глядя на историю коммитов, вы можете видеть, что коммит d14aaa0 отсутствует.