Git Basics - Push and pull changes between local and remote
One of the main benefits of using Git is the ability to collaborate with others on the same project. This is done by setting up a remote repository that can be accessed by all collaborators. But, in order to collaborate, you'll have to synchronize your local repository with the remote one. This is where the push and pull operations come in.
Push changes to remote
In order to push changes to the remote repository, you'll first have to set up a remote tracking branch. This is often done by using git branch
with the -u
flag. Then, you can use git push
to push the latest changes from the local branch to the remote.
# Syntax: # git branch -u <remote>/<branch> # git push git branch -u origin/patch-1 git push # The remote `patch-1` branch is now up to date with the local branch
Alternatively, you can use the --set-upstream
flag with git push
to set up a remote tracking branch and push the latest changes in one go. This is only possible if the remote branch doesn't exist yet.
# Syntax: git push --set-upstream <remote> <branch> git push --set-upstream origin patch-1 # The remote `patch-1` branch is now up to date with the local branch
Pull changes from remote
Similar to pushing changes to a remote repository, you'll have to set up a remote tracking branch before you can pull changes from it. Luckily, git checkout
is smart enough to do this for you, provided there is no local branch with the same name as the remote one. Then, you can use git pull
to fetch and apply the latest changes from the remote.
# Syntax: # git checkout <branch> # git pull git checkout patch-1 git pull # The local `patch-1` branch is now up to date with the remote branch `patch-1`
In case you have a local branch with the same name as the remote one and don't want to overwrite it, things are a bit more complicated. You'll have to use git checkout
with the -b
flag to specify the local branch's name and the --track
flag to specify the remote branch's name. Then, you can use git pull
as usual.
# Syntax: # git checkout -b <local-branch> --track <remote>/<branch> # git pull git checkout -b patch-one --track origin/patch-1 git pull # The local `patch-one` branch is now up to date with the remote branch `patch-1`