Mic*_*ant 8 git git-merge git-checkout git-branch git-squash
我有一个本地分支,我们正在使用带有Pull请求的git-flow,我希望在收到PR反馈后压缩一些提交.
如何将我的所有提交(例如PR)压缩到同一个分支中?
我想它会是这样的:
git checkout master # For master
git pull # Get all branches up-to-date
git checkout feature1 # Checkout the branch
git checkout -b feature1_squash # Make a copy of the branch
git branch -D feature1 # Delete original branch
git checkout master # (?) Branch off latest master for safety
git checkout -b feature1 # Make new (empty) original branch
git merge --squash feature1_squash # Merge with squash into it
git push -f feature1 # Push, force will be required
Run Code Online (Sandbox Code Playgroud)
但我不确定.
通过这么多步骤,使用函数将它们绑定在一起并将分支名称作为参数传递似乎也是一个很好的例子.当然,自动化它意味着确保处理错误,异常,边缘情况等.
我不想使用交互式rebase,因为对我训练的新手来说是正确的.我也不想知道提交的数量,我只想做这个分支上存在的所有提交.
VonC 的答案几乎就在那里。但是知道你想要返回 3 个提交是很困难的。
相反,你应该使用 merge-base
git reset --soft $(git merge-base YOUR_BRANCH WHERE_YOU_BRANCHED_FROM)
git commit
Run Code Online (Sandbox Code Playgroud)
并编辑您的消息(或使用 git commit -m 代替)
如果您在该分支上,则可以使用 HEAD 并假设您从 master 分支,您的命令将是(使用 origin/master 由于本地 master 可能已过时)
git reset --soft $(git merge-base HEAD origin/master)
git commit
Run Code Online (Sandbox Code Playgroud)
如果您不记得从哪里分支,那么您将 PR 合并回的位置可能是正确的
| 归档时间: |
|
| 查看次数: |
1956 次 |
| 最近记录: |