How do I force “git pull” to overwrite local files?

前端 未结 30 3470
失恋的感觉
失恋的感觉 2020-11-21 11:35

How do I force an overwrite of local files on a git pull?

The scenario is the following:

  • A team member is modifying the t
30条回答
  •  情话喂你
    2020-11-21 12:10

    ⚠ Important: If you have any local changes, they will be lost. With or without --hard option, any local commits that haven't been pushed will be lost.[*]

    If you have any files that are not tracked by Git (e.g. uploaded user content), these files will not be affected.


    First, run a fetch to update all origin/ refs to latest:

    git fetch --all
    

    Backup your current branch:

    git checkout -b backup-master
    

    Then, you have two options:

    git reset --hard origin/master
    

    OR If you are on some other branch:

    git reset --hard origin/
    

    Explanation:

    git fetch downloads the latest from remote without trying to merge or rebase anything.

    Then the git reset resets the master branch to what you just fetched. The --hard option changes all the files in your working tree to match the files in origin/master


    Maintain current local commits

    [*]: It's worth noting that it is possible to maintain current local commits by creating a branch from master before resetting:

    git checkout master
    git branch new-branch-to-save-current-commits
    git fetch --all
    git reset --hard origin/master
    

    After this, all of the old commits will be kept in new-branch-to-save-current-commits.

    Uncommitted changes

    Uncommitted changes, however (even staged), will be lost. Make sure to stash and commit anything you need. For that you can run the following:

    git stash
    

    And then to reapply these uncommitted changes:

    git stash pop
    

提交回复
热议问题