I have 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.
我想要的只是拥有工作目录exactly与主 HEAD 中的状态相同。
-
我的做法是错误的吗(反复将 --squashing 合并到 github 分支中)。
-
有没有一个简单的,防白痴实现这一目标的方法(无需经历每次冲突)。
-
作为奖励,我想知道什么使用本地版本 and 使用远程版本这张图片中的意思是 - msysgit:
经过大量谷歌搜索后,事实证明我的策略是错误的。git merge --squash
没有做我想要的事情——即将我的 master 分支镜像到我的 github 分支,而不保留 master 中的提交历史记录(简单的合并就可以,但我不想在 github 中拥有任何 master 的历史记录)。
首先,它不会删除已删除的文件 - 有关详细解释,请参阅here
可能还有其他陷阱 - 包括永恒的冲突解决方案无法避免
无论如何,我认为我找到了正确的方法 - 详细的方法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
尝试了一下,它确实按照我想要的方式工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)