2015-08-14 3 views

ответ

1

Вы можете сделать это, используя .

Выполните следующие действия:

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 
# ... 
+0

Я уже нажал предыдущую фиксацию. Это будет проблемой, и где я должен дать «git rebase -i HEAD ~ 2» В ведущем или ветке исправления im, который в настоящее время работает. –

+0

'git push -force' должен исправить это для вас. –

+0

где я должен указывать «git rebase -i HEAD ~ 2» В настоящее время работает мастер или bugfix branch im? –

0

Вы должны выполнить команду 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 
0

Вы работаете в командной строке?

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

Смежные вопросы