git merge squash - conflict resolution when all I want is the changes from the branch I squashed from

邮差的信 提交于 2019-12-20 03:37:08

问题


I have github branch which I push to github when the master branch reaches some acceptable state (have done this once). To this end I did :

MrD@MRSD /c/Dropbox/eclipse_workspaces/android/AndroidMonitoring (master)
$ git checkout github
Switched to branch 'github'
MrD@MRSD /c/Dropbox/eclipse_workspaces/android/AndroidMonitoring (github)
$ git merge --squash master
Auto-merging src/gr/uoa/di/monitoring/android/services/Monitor.java
CONFLICT (add/add): Merge conflict in src/gr/uoa/di/monitoring/android/services/
Monitor.java
//...
Automatic merge failed; fix conflicts and then commit the result.

What I want is to just have the working directory exactly in the same state as in master HEAD.

  • Is my way of doing this wrong (repeatedly merge --squashing into the github branch).
  • Is there an easy, idiot-proof way to achieve this (without going through each conflict).
  • As a bonus I would like to know what Use Local Version and Use Remote Version mean in this pic - msysgit:


回答1:


Well after a lot of googling it turns out that my strategy was wrong. git merge --squash does not do what I want - namely mirroring my master branch to my github branch, without keeping the history of the commits in master (a plain merge would do but I did not want to have any of the master's history in github).
For one it does not delete deleted files - for a nice explanation see here
There are probably other pitfalls - including the eternal conflict resolution that can't be avoided

Anyway I think I found the correct way - the one detailed here

$ git checkout master@{0}
$ git reset --soft github
$ git commit
$ git branch temp
$ git checkout temp
$ git branch -M github
$ git push -u -v  origin github:master

tried it and it does work as I wanted




回答2:


You have to follow up the git merge --squash with a git commit, so there is a possible fault in your workflow.

You can use git merge -s theirs to specify that you always want the other, master branch in this case, to win all merge conflicts. (Though I am surprised you get merge conflicts if you do no separate work on the github branch)



来源:https://stackoverflow.com/questions/16424774/git-merge-squash-conflict-resolution-when-all-i-want-is-the-changes-from-the-b

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!