我目前正在与一组其他人合作完成一项单一任务的项目。我们都必须使用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'失去了。
答案 0 :(得分:0)
删除提交可能是可能的,但如果是,它会非常混乱,需要一些非常好的硬核git操作,可能包括手工编辑一些索引文件。我认为你最好的选择是像你说的那样压缩提交,但我甚至不确定这会干净利落。
关键是从现在开始使用" rebase"拉的时候,Lso得到足够的睡眠!