Reputation: 1640
I had a branch called refactor
, which I merged into master
, using the Gitlab web interface. This also deleted the source branch.
Back in the shell, I noticed that git still thought it was on the refactor
branch (which no longer exists). I tried switching branches back to master
but I had done some further work locally, resulting in unsaved changes. I found a new (to me) command called stash
, so tried that:
$ git stash
warning: LF will be replaced by CRLF in Prec/EnquiryForms/wizard/manifest.xml
The file will have its original line endings in your working directory.
Saved working directory and index state WIP on refactor: 3b174f5 Updated package
Then I could switch to master
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
I tried to apply the stash but got conflicts
$ git stash apply
Auto-merging Prec/Scripts/_wizard/manifest.xml
CONFLICT (content): Merge conflict in Prec/Scripts/_wizard/manifest.xml
Auto-merging Prec/EnquiryForms/wizard/manifest.xml
CONFLICT (content): Merge conflict in Prec/EnquiryForms/wizard/manifest.xml
Auto-merging Prec/Prec.Manifest.xml
CONFLICT (content): Merge conflict in Prec/Prec.Manifest.xml
So I tried just committing anyway and am now stuck.
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: Prec/Prec.Manifest.xml
both modified: Prec/EnquiryForms/wizard/manifest.xml
both modified: Prec/Scripts/_wizard/manifest.xml
Untracked files:
(use "git add <file>..." to include in what will be committed)
Prec/Lookups/CLTYPES/
no changes added to commit (use "git add" and/or "git commit -a")
$ git stash list
stash@{0}: WIP on refactor: 3b174f5 Updated package
$ git add .
$ git commit -m "some changes"
[master d5892a6] some changes
4 files changed, 112 insertions(+)
create mode 100644 Prec/Lookups/CLTYPES/manifest.xml
$ git push origin master
To gitlab.example.com:repo/new.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to '[email protected]:repo/new.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
At this point I have done a git pull
$ git pull
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Unpacking objects: 100% (1/1), done.
From gitlab.example.com:repo/new-coi
c521196..bce53c1 master -> origin/master
Auto-merging Prec/Scripts/_wizard/manifest.xml
CONFLICT (content): Merge conflict in Prec/Scripts/_wizard/manifest.xml
Auto-merging Prec/EnquiryForms/wizard/manifest.xml
CONFLICT (content): Merge conflict in Prec/EnquiryForms/wizard/manifest.xml
Auto-merging Prec/Prec.Manifest.xml
CONFLICT (content): Merge conflict in Prec/Prec.Manifest.xml
Automatic merge failed; fix conflicts and then commit the result.
I'm now at the following status
$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 5 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
I don't really understand what's happened here, or how to fix it. I basically want those changes I made after merging branches to be committed into the master branch. Git needs to be as up-to-date as my local directory.
Upvotes: 1
Views: 1609
Reputation: 3677
After you pulled from master, your changes are conflicting with some changes pushed into master (while you were working on your changes). Git cannot merge the changes itself, wants you to resolve the conflict and then push again.
Here are the steps to resolve the conflicts and then push to the remote repo again: Resolve Merge Conflicts using command line
Upvotes: 1