Недавно я нажал фиксацию на мой удаленный репозиторий git, и теперь я собираюсь совершить другое изменение.Как слить две коммиты в git?
Есть ли способ объединить эти коммиты в единую фиксацию?
Недавно я нажал фиксацию на мой удаленный репозиторий git, и теперь я собираюсь совершить другое изменение.Как слить две коммиты в git?
Есть ли способ объединить эти коммиты в единую фиксацию?
Вы можете сделать это, используя .
Выполните следующие действия:
git rebase -i HEAD~2
Вы увидите что-то вроде этого, в редакторе, который открывается:
pick 3e7ee36 Older commit message
pick fa20af3 Newer commit message
# Rebase 8db7e8b..fa20af3 onto 8db7e8b
# ...
fixup
или squash
новее фиксации, то есть, заменить pick
в newer совершить к fixup
и сохранить и выйти из файла. Это слияние 2 фиксаций сохраняя старое сообщение:
pick 3e7ee36 Older commit message
fixup fa20af3 Newer commit message
# Rebase 8db7e8b..fa20af3 onto 8db7e8b
# ...
Вы должны выполнить команду rebase
$ git init
$ touch readme
$ git add readme
$ git commit -m "Initial Commit"
[master (root-commit) 6dde006] Initial Commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 readme
$ touch a
$ touch b
$ git add a
$ git commit -m "First commit"
[master 74296cb] First commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
$ git add b
$ git commit -m "Second commit" --squash=HEAD
[master 9ba46ab] squash! First commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 b
$ git rebase HEAD~2 -i
Простых сохранить и закрыть редактор перебазирования, то мерзавец запросит новое сообщение для объединенного коммита вы можете его отредактировать, если хотите.
[detached HEAD f855a0f] First commit
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
create mode 100644 b
Successfully rebased and updated refs/heads/master.
$ git log --oneline
cf855a0f First commitinsertions(+), 0 deletions(-)
6dde006 Initial Commit
Если вы протолкнул первый коммит, вы можете обновить удаленную ветку с опцией force
, но будьте осторожны, если кто-то уже вытащил свои изменения, они будут иметь тонн проблем при насильственном нажать изменения:
git push origin master --force
Вы работаете в командной строке?
1). Если вы только что сделали совершить A
расшириться my-branch
и толкнул его, и вы делаете работу, вы можете использовать:
git add -A
с последующим git commit --amend
который добавит свои изменения, которые совершают вы уже толкнул. Затем используйте git push -f origin my-branch
2). Если вы подтолкнули совершить A
, а затем уже совершил B
расшириться my-branch
, то вы можете сделать следующее:
git rebase --soft HEAD~
который отменит совершить B
, а затем использовать git commit --amend
добавить изменения в совершающие A
, а затем, как описано выше использования git push -f origin my-branch
Я уже нажал предыдущую фиксацию. Это будет проблемой, и где я должен дать «git rebase -i HEAD ~ 2» В ведущем или ветке исправления im, который в настоящее время работает. –
'git push -force' должен исправить это для вас. –
где я должен указывать «git rebase -i HEAD ~ 2» В настоящее время работает мастер или bugfix branch im? –