Published 2025-06-19.
Time to read: 2 minutes.
git
collection.
Git pull
is a command used to update your local repository with changes from a remote repository.
It is a combination of two commands: git fetch
and git merge
. \
When you run git pull
,
Git first fetches the latest changes from the specified remote branch and then
merges those changes into your current branch.
The command is typically used to synchronize your local repository with the remote repository,
ensuring that you have the latest changes made by other contributors.
It is a common practice to run git pull
before starting new work
to ensure that your local branch is up-to-date with the remote branch.
Unfortunately, git pull
is not provided by libgit2
.
I discuss this in Merge and Pull: Git CLI vs. Libgit2 Wrappers.
Force Pull
I have scripts that perform directory tree backups.
If the directories contain git repositories with uncommitted changes,
then after committing the original git repository,
git pull
will fail for the copy with this message:
error: The following untracked working tree files would be overwritten by merge
.
To force git pull to overwrite local files, discarding any local changes
and making your local branch identical to the remote branch,
you can use a combination of git fetch
and git reset --hard
.
The standard git pull
command attempts to merge remote changes into your local branch.
If there are uncommitted local changes that conflict with the incoming remote changes,
git pull
will often refuse to proceed to prevent data loss.
To force the overwrite:
Fetch the latest changes from the remote repository:
$ git fetch --all
This command downloads the latest changes from all remote repositories without merging or rebasing them into your local branches.
Reset your local branch to match a remote branch called master
:
$ git reset --hard origin/master
This command discards all local changes (both staged and unstaged) and resets your branch's history to exactly match the specified remote branch called
master
.