User Tools

Site Tools


git:git-conflict-management

Back to git main page

When another user has modified a file and has pushed it before you, you will get a rejection like this when try to push :

git push
Username for 'https://gitlab.com': MyUserName
Password for 'https://MyUserName@gitlab.com': 
warning: redirecting to https://gitlab.com/MyUserName/my-project.git/
To https://gitlab.com/MyUserName/my-project.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://gitlab.com/MyUserName/my-project.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.

When trying to pull, you will also have a rejection, like this :

git pull
Username for 'https://gitlab.com': MyUserName
Password for 'https://MyUserName@gitlab.com': 
warning: redirecting to https://gitlab.com/MyUserName/my-project.git/
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 9), reused 5 (delta 2), pack-reused 0
Unpacking objects: 100% (12/12), done.
From https://gitlab.com/MyUserName/my-project
   12511b3..2a1f0ac  master     -> origin/master
Updating 12511b3..2a1f0ac
error: Your local changes to the following files would be overwritten by merge:
	file_that_has_changed.txt
Please commit your changes or stash them before you merge.
Aborting

There are many ways to solve this problem. One way is to use stash. This command will temporarily remove our modifications.

git stash

Then we do a hard pull to update our branch, here we use the master branch :

git reset --hard origin/master

Then we add our modifications by bringing back (popping) the stashed data :

git stash pop

Finally we can push our changes using the standard way, with add commit and push :

git add file_that_has_changed.txt
git status
On branch master
Your branch is up to date with 'origin/master'.
 
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
	modified:   file_that_has_changed.txt
git commit -m  "add my changes"
[master f70fbb4] add my changes
 1 file changed, 2 insertions(+)
git push
Username for 'https://gitlab.com': MyUserName
Password for 'https://MyUserName@gitlab.com': 
warning: redirecting to https://gitlab.com/MyUserName/my-project.git/
Counting objects: 5, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 432 bytes | 432.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
To https://gitlab.com/MyUserName/sal-2020
   2a1f0ac..f70fbb4  master -> master
git/git-conflict-management.txt · Last modified: 2023/03/31 12:17 by 127.0.0.1