我有一个本地git仓库,一个远程仓库.自从上次从远程拉出以来,我向本地回购做了5次提交.
现在我需要推送到远程.我需要压缩我最近的5次提交.
我可以做到 git rebase -i HEAD~5
但这并不好.我不想在我的本地仓库中改变任何东西.我想将一个压扁的提交推送到远程,并在我的本地仓库中保留5个未更改的提交.
有任何想法吗?
UPD:如果我的本地仓库有5次提交怎么办?我需要创建新的远程仓库以与他人共享我的代码.如何压缩这个新回购的提交?
关于如何压缩git和其他DVCS的提交,也有很多问题,例如:
我的问题是,我想要压缩提交吗?我应该保留详细的提交顺序,显示功能是如何开发的,还是我应该在功能完成后将它们压缩成一个,以保持历史更清晰?
谁能告诉我这两个命令之间的区别:
git merge --squash
Run Code Online (Sandbox Code Playgroud)
和
git merge --no-ff
Run Code Online (Sandbox Code Playgroud) 我有很多提交,我想要一起压缩成一个提交.当然,我可以代替pick与squash每一个承诺,但我有几百个提交.有没有办法自动执行此操作?
我的历史看起来有点像这样但是时间10:
i - j - e'- k - h'- l - m feature-branch
/
a - b - c - d - e - f - g - h master
Run Code Online (Sandbox Code Playgroud)
(撇号意思是樱桃选秀权)我想改变这个:
i - j - k - l - m feature-branch
/
a - b - c - d - e - f - g - h master
Run Code Online (Sandbox Code Playgroud)
我不介意该功能是否被压缩为1次提交.常规rebase的主要问题是它一次尝试重新设置一个提交,我必须一遍又一遍地修复和重新修复类似的冲突.
我想要的只是取我的分支尖端和主人的尖端之间的差异,并将其应用于主人之上.
我重新安排了一个有2个提交的同事分支,并将第二个提交压缩到第一个提交.它保留了原作者(即不是我).
假设我想修复一行代码,所以我反转一个大块并进行新的提交.
在这一点上,我回到了我开始的地方,有两个我想要挤在一起的提交,并希望保留原作者.但是,在早先的情况下,两个提交都有相同的作者.在后一种情况下,被压扁的提交有不同的作者.哪位作者将git分配给新的重新定位/压缩提交?
我总是使用命令提示符来压缩多个提交,我想知道如何使用 eclipse 来做到这一点!
我一直在寻找这个答案,但我还没有找到有用的东西。
我该怎么办?
我与一个使用“合并工作流程”的小团队合作,我们最近根据Sandofsky 的文章切换到“变基工作流程” 。
我们当前的工作流程:
在对功能分支进行变基后,我们将其合并到我们的主分支中。如果我们使用 --no-ff 代替会发生什么?git merge --squash和 和有什么区别git merge --no-ff?
我已经执行了以下合并:
A---B---C---E (HEAD, merge of C and D)
/
D---|
Run Code Online (Sandbox Code Playgroud)
但我注意到E中的一些问题,并在F中修复了它们:
A---B---C---E---F (HEAD)
/
D---|
Run Code Online (Sandbox Code Playgroud)
我想修改提交,E以便它包含F.
当我尝试时git rebase -p -i HEAD~2,它会尝试创建常规(非合并)提交,甚至尝试让我重新解决在执行合并时已经解决的冲突E。
如何修复提交E,使其包含中所做的更改F?