我正在尝试将所有提交从当前分支重新压缩并压缩到主分支。这是我正在尝试做的事情:
git checkout -b new-feature
在我尝试之后做了几次提交:
git rebase -i master
在这种情况下,提交将保留在new-feature
分支
git checkout master
git rebase -i new-feature
它给我和编辑带有noop消息的窗口。
我知道命令:
git merge --squash new-feature
但我目前正在学习rebase
命令。
答案 0 :(得分:52)
让我们来看看这些步骤。
1 - 我们创建了一个新的功能分支
git checkout -b new-feature
2 - 现在您可以在新分支上添加/删除和更新您想要的任何内容
git add <new-file>
git commit -am "Added new file"
git rm <file-name>
git commit -am "Removed a file"
cat "add more stuff to file" >> <new-file>
git commit -am "Updated files"
3 - 接下来,选择并将任何提交压缩成一个漂亮的提交消息
git rebase -i master
这里需要记住的关键是在第一次提交后将所有提交的“pick”文本更改为“squash”。这会将所有提交压缩到您的主分支。
4 - 选择主分支
git checkout master
5 - 将HEAD和主分支移动到新功能所在的位置:
git rebase new-feature
您可以在此可视化工具中尝试所有命令: http://pcottle.github.io/learnGitBranching/
答案 1 :(得分:6)
当重新定位时,Git不会将提交移动到另一个分支。它将移动分支,包括其所有提交。如果您希望在重新引用之后将提交转换为master,请使用git merge <branch tip or commit of branch>
将master分支快进到该提交。