-->

混帐合并壁球 - 解决冲突时,所有我想要的是我从压扁分支的改变(git merge squash -

2019-09-02 04:44发布

我有github上分支,我推当主分支到达某一可接受状态的github(曾经做过)。 为此我做:

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.

我要的是只是有工作目录完全一样的状态在主HEAD。

  • 难道我这样做不对(多次撤并--squashing到GitHub的分支)的方式。
  • 有一个简单, 傻瓜型的方式来实现这一目标(不通过每个冲突会)。
  • 作为奖励,我想知道有什么用本地版本 ,并使用远程版本本PIC的意思是- msysgit:

Answer 1:

之后好了很多谷歌上搜索事实证明,我的策略是错误的。 git merge --squash不会做我想做的-即镜像我的主分支我的github分支,不保持在大师提交的历史(一个普通的合并会做,但我不希望有任何大师的历史,在github上)。
对于一个不删除已删除的文件-一个不错的解释看这里
可能有其他缺陷-包括永恒冲突的决议, 不能避免

无论如何,我想我找到了正确的方式-一个详细的在这里

$ 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

试了一下,它的工作,因为我想



Answer 2:

你必须跟进git merge --squashgit commit ,所以在您的工作流程可能的故障。

您可以使用git merge -s theirs指定你总是希望在这种情况下,其他的,主分支,赢得所有的合并冲突。 (虽然我很惊讶你,如果你做GitHub的分支没有单独的工作合并冲突)



文章来源: git merge squash - conflict resolution when all I want is the changes from the branch I squashed from