随着git rebase --interactive <commit>
你能够压制任意数量的提交连成一个单一的一个.
除非你想将提交压缩到初始提交中,否则这一切都很棒.这似乎是不可能的.
有没有办法实现它?
在一个相关的问题中,我设法提出了一种不同的方法来解决第一次提交的问题,这也就是说,它是第二次提交.
如果您有兴趣:git:如何插入提交作为第一个,转移所有其他?
这给出了压缩多个提交的一个很好的解释:
http://git-scm.com/book/en/Git-Branching-Rebasing
但它不适用于已被推送的提交.如何在我的本地和远程回购中压缩最近几次提交?
编辑:当我这样做时git rebase -i origin/master~4 master
,保留第一个pick
,将其他三个设置为squash
,然后退出(通过emacs中的cx cc),我得到:
$ git rebase -i origin/master~4 master
# Not currently on any branch.
nothing to commit (working directory clean)
Could not apply 2f40e2c... Revert "issue 4427: bpf device permission change option added"
$ git rebase -i origin/master~4 master
Interactive rebase already started
Run Code Online (Sandbox Code Playgroud)
其中2f40是pick
提交.现在,4个提交中没有一个出现git log
.我希望我的编辑器能够重新启动,以便我可以输入提交消息.我究竟做错了什么?
你如何将整个存储库压缩到第一次提交?
我可以重新设置第一次提交,但这会让我有2次提交.有没有办法在第一个之前引用提交?
我是git的新手,我正在努力理解壁球和篮板之间的区别.根据我的理解,你做一个篮板时做一个壁球.
我在一个分支上有八个提交,我想通过电子邮件发送给一些不是git开悟的人.到目前为止,我所做的每件事都给了我8个补丁文件,或者从一开始就开始给分支历史上每次提交的补丁文件.我使用git rebase --interactive来压缩提交,但是现在我尝试的所有内容从一开始就给了我数以万计的补丁.我究竟做错了什么?
git format-patch master HEAD # yields zillions of patches, even though there's
# only one commit since master
Run Code Online (Sandbox Code Playgroud) 我正在尝试压缩一系列提交 - HEAD到HEAD~3.有没有快速的方法来做到这一点,还是我需要使用rebase --interactive?
我一直在使用Git Extensions一段时间(它真棒!)但我还没有找到以下简单的答案:
有时候,在输入提交消息时,会输入错误信息.我的朋友告诉我如何通过以下方式修复它(在Git Extentions中):
右键单击提交>高级>修复提交
然后我只需选中"修改"框并重写我的信息即可!我的提交消息已修复.
然而,另一个选项"壁球提交"......我一直想知道它的作用是什么?!
我的问题是:
有人会简单地解释一下在Git/Git Extentions中Squash提交和Fixup提交之间的确切区别是什么?他们看起来...... 与我"相似":
这是我在工作中经常处理的工作流程.
git checkout -b feature_branch
# Do some development
git add .
git commit
git push origin feature_branch
Run Code Online (Sandbox Code Playgroud)
此时,我的同事们正在审查功能部门,但我希望继续开发其他依赖的功能feature_branch
.所以feature_branch
在审查中......
git checkout feature_branch
git checkout -b dependent_branch
# Do some more development
git add .
git commit
Run Code Online (Sandbox Code Playgroud)
现在我做了一些更改以响应feature_branch上的代码审查
git checkout feature_branch
# Do review fixes
git add .
git commit
git checkout dependent_branch
git merge feature_branch
Run Code Online (Sandbox Code Playgroud)
现在这是我们遇到问题的地方.我们在master上有一个squash策略,这意味着合并到master中的功能分支必须压缩成一个提交.
git checkout feature_branch
git log # Look for hash at beginning of branch
git rebase -i first_hash_of_branch # Squash feature_branch …
Run Code Online (Sandbox Code Playgroud) 应该使用哪一个来隐藏微观发现?
是git merge --squash
和git merge --no-ff --no-commit
否认其他父母的唯一区别?
git ×10
squash ×10
rebase ×4
git-rebase ×3
git-squash ×2
merge ×2
arcanist ×1
difference ×1
fast-forward ×1
fixup ×1
git-merge ×1
interactive ×1
patch ×1