Pergunta

I'm having a problem with editing commits.

I have 2 commits for 2 .php files. My goal is to edit them both. I read about rebase -i and this is what I reckon is supposed to be done:

  • first I change pick to edit;
  • save and exit;
  • rebase stops;
  • type git commit --amend;
  • make changes, save and close the text editor;
  • type git rebase --continue.

After this I believe the rebase stops again and I have to do this all over again for the second commit.

But right after I type git rebase --continue i get this:

file1.php: needs update
You must edit all merge conflicts and then
mark them as resolved using git add

What is the problem and what do I do?

Foi útil?

Solução

When you stop for the rebase you have to:

  • edit a file(s)
  • add changes to the index - git add changedFile
  • amend changes - git commit --amend
  • continue rebasing - git rebase --continue

From your description it is possible that you forgot to add changes to the index. In that case git commit --amend does nothing (there is no changes to amend). In addition you have git commit --amend before you edit the file which is also wrong (you have to amend changes you already did on the file).

Try to apply steps in the order I gave.

Outras dicas

(Posted solution on behalf of OP).

I got the right way to do it:

git rebase -i --root (I wasn't able to find both commits using HEAD~2)
pick->edit for both commits
Ctrl+X and Y and ENTER
edit the first commit
git add file1.php
git commit --amend
git rebase --continue
edit the second commit
git add file2.php
git commit --amend
git rebase --continue
git push -f

Hope this helps at least one person starting their git experience. Szpak, you've been a big help. Thanks.

If you are on a feature branch on which you are working alone:

First make the changes to the file and create a new commit.

git commit -m "message here"

Make sure you are on your feature branch

git checkout your_feature_branch
git rebase -i parent_branch (the branch the your_feature_branch was forked from)

The editor will the pop up with options. Change the tag from squash for the 2nd line. You will then have the option to edit your commit message. You can remove the one commit message and update with different text.

Shift+zz (exit for vi)

If you attempt git push your_feature_branch here you will receive the following error:

$ git push your_feature_branch
To https://your_repo.git
 ! [rejected]        your_feature_branch -> your_feature_branch (non-fast-forward)
error: failed to push some refs to 'https://your_repo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Which is expected because of the local changes you made - to overcome this use:

git push your_feature_branch --force

The above command will push the changes to remote repo.

NOTE: Usage of --force is not standard or recommended so only use this if you know what you are doing. It is permitted in this case because the assumption is that you are the only one working on your_feature_branch

I am assuming you are working alone on your feature branch.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top