壁球或删除过去的合并提交

时间:2015-03-01 04:55:22

标签: git merge squash

我目前正在与一组其他人合作完成一项单一任务的项目。我们都必须使用Git(非常感到高兴)并且我们已经设置它以便没有人提交the main repository on GitHub并且一切都已完成via pull-requests

我们也在利用gitflow tool来协调发展。

我充当主要维护者,并且我已经陷入了一个问题(尽管一个小的)与提交日志的状态有关。

我合并了来自其他人的拉取请求,并且由于某种原因(在一些睡眠不足的状态下)我通过merge --no-ff是一种粉丝 - 他妈的 - 方式来检查来自自动发出跟踪器。我现在已经意识到这是让commit log graph骇人听闻。这里的参考它在下面(通过git log --oneline --graph打印):

* 910f7ce Create '.travis.yml'
*   52eeef7 Merge branch 'release/0.1.1-alpha' into 'development'
|\  
| *   9c9bd36 Merge remote-tracking branch 'MiniAl/release/0.1.1-alpha' into 'release/0.1.1-alpha'
| |\  
|/ /  
| * baeb154 Introduce, or edit, the `author` tag for classes
| * ebf4b91 Set the version for classes missing the tag
| * 90b985c Add the `since` tag to members missing it
|/  
* 21f7a10 Create an Eclipse project file for Sapphire
*   7a075c3 Merge remote-tracking branch 'georgedee/development' into 'development'
|\  
| * b48077f Include JavaDoc for the Android implementation
* |   99950d1 Merge remote-tracking branch 'MiniAl/development' into 'development'
|\ \  
| |/  
|/|   
| * 1a8df92 Document the entire framework supplied by SAAF
|/  
* b40e845 Initial commit

这显然是丑陋的,我想做两件事之一:

  • 压缩合并提交,提交存在很好我只想转移它以使合并变得平坦;或者,或者

  • 完全删除提交并设置日志,看起来两个合并只是merge --ff(这是可能的首选操作)。

这项工作已被推到主要回购的事实无关紧要。我的小组成员对Git来说相对较新,并且不经常提交。没有任何工作会丢失,我很乐意通过push -f在GitHub上讨论它们。

我希望简单地删除将远程跟踪分支合并到本地分支的提交(' MiniAl / development'进入'开发'例如,不是' release / 0.1 .1-alpha'进入'开发')。有可能解决这个问题吗?

当前对解决方案的尝试

  • 我试图发明某种形式的时间机器,并阻止我过去的自己犯下如此令人发指的罪行(我的物理学朋友告诉我,这还不可能)。

  • 我尝试过运行git rebase -i -p,因为其他人似乎已经取得了成功,但是要压缩合并,Git只是拒绝并且不会告诉我原因。它只是声明它不会这样做。

  • 我已尝试git rebase -i,但要么是在MiniAl / development'或者' georgedee / development'失去了。

1 个答案:

答案 0 :(得分:0)

删除提交可能是可能的,但如果是,它会非常混乱,需要一些非常好的硬核git操作,可能包括手工编辑一些索引文件。我认为你最好的选择是像你说的那样压缩提交,但我甚至不确定这会干净利落。

关键是从现在开始使用" rebase"拉的时候,Lso得到足够的睡眠!