简体   繁体   中英

Gitlab branches 'diverged' after merging two branches

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 'git@gitlab.example.com: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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM