我正在尝试将分支中的提交压缩到最终合并到master的时候(如果已经批准了pull请求之后),提交历史记录看起来很干净。在提出pull请求之前我做了一个
git rebase -i
并重写历史。
然而,当在其分支中开发该功能时,我必须将主服务器的内容合并到分支上,因为由于其他功能分支被合并,主服务器通常会向前移动。
我看到我将master合并到功能分支我不能压缩他使用交互式rebase再提交。它会在拉取请求期间导致异常差异,即作为合并的一部分而发生的变化。
在这种情况下,压缩提交的最佳方法是什么?
答案 0 :(得分:8)
如果您只是想要将所有内容都设置为sqaush,那么您可以采用一种更简单的方式来实现,而不依赖于使用交互式基础。您只需对主分支进行软重置,然后提交这些更改:
git reset --soft master
git commit -m 'All changes from my branch squashed'
这基本上会重置指向master
分支的分支指针,而不会更改工作目录中的任何内容。因此,结果是您在索引中拥有了所有这些可以立即提交的更改。
答案 1 :(得分:2)
如果您希望功能分支位于主分支的顶部,那么您的请求包含来自其他功能分支合并的更改。您可以使用以下命令:
CATransaction.setDisableActions(true)
从原始主文件获取后,这将在master分支的顶部修改功能分支。
答案 2 :(得分:0)
我正在尝试将分支中的提交压缩到最终合并到主服务器的提交时(在提交请求后如果被批准)提交历史记录看起来很干净
您可以使用feature
来压缩您的分支(例如,feature
)提交。假设您在$ git checkout feature
$ git log # see how many commits do you need to squash
$ git reset --soft HEAD~4 # note: if you have N commits then HEAD~{N-1}
Or, git reset --soft <first-commit> # reset to first commit of your branch
$ git add . # add the files
$ git commit --amend -am 'Squash all commits' # squash all the commits
$ git push -f origin feature # force(-f) push to remote since git history is changed
分支中有5个提交。现在你需要5次提交= 1次新提交。
$ git pull origin master
现在,Pull master分支发生变化。
public void doGet(HttpServletRequest request , HttpServletResponse response)throws ServletException {
HttpSession session = request.getSession();
//todo getSomeThing from DB
session.setAttribute("userInfo","yourMessage");
response.sendRedirect("your Page Location");
}
现在使用GitHub GUI(浏览器)创建一个Pull请求。