How do I push amended commit to the remote Git repository?

后端 未结 16 1380
深忆病人
深忆病人 2020-11-22 04:42

When I\'ve worked a bit with my source code, I did my usual thing commit and then I pushed to a remote repository. But then I noticed I forgot to organize my imports in the

相关标签:
16条回答
  • 2020-11-22 04:45

    I just kept doing what Git told me to do. So:

    • Can't push because of amended commit.
    • I do a pull as suggested.
    • Merge fails. so I fix it manually.
    • Create a new commit (labeled "merge") and push it.
    • It seems to work!

    Note: The amended commit was the latest one.

    0 讨论(0)
  • 2020-11-22 04:45

    The following worked for me when changing Author and Committer of a commit.

    git push -f origin master

    Git was smart enough to figure out that these were commits of identical deltas which only differed in the meta information section.

    Both the local and remote heads pointed to the commits in question.

    0 讨论(0)
  • 2020-11-22 04:46

    If you have not pushed the code to your remote branch (GitHub/Bitbucket) you can change the commit message on the command line as below.

     git commit --amend -m "Your new message"
    

    If you're working on a specific branch, do this:

    git commit --amend -m "BRANCH-NAME: new message"
    

    If you've already pushed the code with a wrong message then you need to be careful when changing the message. i.e after you change the commit message and try pushing it again you end up with having issues. To make it smooth follow the following steps.

    Please read the entire answer before doing it

    git commit --amend -m "BRANCH-NAME : your new message"
    
    git push -f origin BRANCH-NAME                # Not a best practice. Read below why?
    

    Important note: When you use the force push directly you might end up with code issues that other developers are working on the same branch. So to avoid those conflicts you need to pull the code from your branch before making the force push:

     git commit --amend -m "BRANCH-NAME : your new message"
     git pull origin BRANCH-NAME
     git push -f origin BRANCH-NAME
    

    This is the best practice when changing the commit message, if it was already pushed.

    0 讨论(0)
  • 2020-11-22 04:46

    If you are using Visual Studio Code, you can try this extension to make it easier.

    https://marketplace.visualstudio.com/items?itemName=cimdalli.git-commit-amend-push-force

    As you can understand from its name, it executes commands consecutively

    • git commit --amend
    • git push --force
    0 讨论(0)
  • 2020-11-22 04:49

    I had to fix this problem with pulling from the remote repo and deal with the merge conflicts that arose, commit and then push. But I feel like there is a better way.

    0 讨论(0)
  • 2020-11-22 04:50

    I had the same problem.

    • Accidentally amended the last commit that was already pushed
    • Done a lot of changes locally, committed some five times
    • Tried to push, got an error, panicked, merged remote, got a lot of not-my-files, pushed, failed, etc.

    As a Git-newbie, I thought it was complete FUBAR.

    Solution: Somewhat like @bara suggested + created a local backup branch

    # Rewind to commit just before the pushed-and-amended one.
    # Replace <hash> with the needed hash.
    # --soft means: leave all the changes there, so nothing is lost.
    git reset --soft <hash>
    
    # Create new branch, just for a backup, still having all changes in it.
    # The branch was feature/1234, new one - feature/1234-gone-bad
    git checkout -b feature/1234-gone-bad
    
    # Commit all the changes (all the mess) not to lose it & not to carry around
    git commit -a -m "feature/1234 backup"
    
    # Switch back to the original branch
    git checkout feature/1234
    
    # Pull the from remote (named 'origin'), thus 'repairing' our main problem
    git pull origin/feature/1234
    
    # Now you have a clean-and-non-diverged branch and a backup of the local changes.
    # Check the needed files from the backup branch
    git checkout feature/1234-gone-bad -- the/path/to/file.php
    

    Maybe it's not a fast and clean solution, and I lost my history (1 commit instead of 5), but it saved a day's work.

    0 讨论(0)
提交回复
热议问题