2013-03-31 111 views
19

我试图重新设置并压扁当前分支的所有提交给主。这里是我想要做的事:Git:如何将分支和压缩从分支提交给主设备?

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命令的学习。

回答

4

重新绑定时,Git不会将提交移动到另一个分支。它将移动包含所有提交的分支。如果您想要在提交到主服务器后将其提交到主服务器,请使用git merge <branch tip or commit of branch>将主服务器分支快速转发到该提交服务器。

45

让我们走过这些步骤。

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 

你需要记住这里的关键是在第一次提交后将所有提交的文字改为“挤压”。这将压缩所有提交到您的主分支。

4 - 选择主分支

git checkout master 

5 - 移动头部和主分支到新的特点是:

git rebase new-feature 

你可以尝试所有的命令列于本可视化工具: http://pcottle.github.io/learnGitBranching/

+5

您可能会得到'无法挤压没有先前提交'的消息这样做。 http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one – backdesk

+0

不错...虽然我通常会压制我的提交'git rebase -i HEAD〜##' pull/rebase'git pull --rebase origin master'我只是喜欢在两个步骤中完成这个任务,这让我可以在rebase之前/之后进行审查。 – Tracker1

+1

这个答案看起来比挑选的更合适 – fernandopasik