Github repo squash在主服务器上提交
我正在与github repo合作,其中历史上有很多提交都是“错误修复”、“这次是实时错误修复”、“确定最终错误修复”、“最终修复” 这些都是直接交给师父的。我怎样才能把它们压扁Github repo squash在主服务器上提交,github,squash,git-squash,Github,Squash,Git Squash,我正在与github repo合作,其中历史上有很多提交都是“错误修复”、“这次是实时错误修复”、“确定最终错误修复”、“最终修复” 这些都是直接交给师父的。我怎样才能把它们压扁 从他一年前的帖子上看,这听起来很糟糕。在过去的一年里有什么变化吗?今天的答案基本上是一样的:挤压这些提交是可能的,但是在Git中重写共享历史是必须极力避免的 假设您和我每人都有一个同样存在于GitHub上的某个存储库的副本: A---B---C 您注意到提交B和C实际上应该一起提交,所以您可以在本地副本中压缩这些提交
从他一年前的帖子上看,这听起来很糟糕。在过去的一年里有什么变化吗?今天的答案基本上是一样的:挤压这些提交是可能的,但是在Git中重写共享历史是必须极力避免的 假设您和我每人都有一个同样存在于GitHub上的某个存储库的副本:
A---B---C
您注意到提交B
和C
实际上应该一起提交,所以您可以在本地副本中压缩这些提交。你现在有
A---D
其中D
是B
和C
的组合,而GitHub和我仍然有
A---B---C
在这一点上,即使文件内容在任何地方都是相同的,我们的提交ID也有分歧。现在,如果没有--force
,您就无法推送到GitHub,因为GitHub的master
分支包含两个历史记录中不再存在的提交
如果您确实使用了--force
,您可以让GitHub接受您的更改,但是现在我的存储库包含了不再存在于上游的提交对象。如果不使用--force
(这将使您的更改无效),或者不进行相对时髦的合并来引入您的更改,或者重新调整我的工作,等等,我就无法推送到GitHub。只有在Git之外与我沟通,告诉我您做了什么,这才是可能的
随着越来越多的开发人员(想象在Linux内核存储库上做这件事!)和越来越多的工作同时进行,这一点变得更加混乱
真的,任何时候当你想推git-push-force的时候,坐下来想一想。你可能正在做的事情应该有一个非常好的理由
我的建议是接受你们的历史有点混乱,但要努力改善未来的情况。在推送到GitHub(或与其他开发人员共享)之前,可以在本地清理这些提交。在功能分支中工作,使用
cherry pick
,rebase
等清理提交历史记录(如果需要),然后推送。挤压是用于将大量提交合并为一个提交的功能。如果您想清理最后一次serval提交,请使用
git log
这看起来像这样
* df71a27 - (HEAD feature_x) Updated CSS for new elements (4 minutes ago)
* ba9dd9a - Added new elements to page design (15 minutes ago)
* f392171 - Added new feature X (1 day ago)
* d7322aa - (origin/feature_x) Proof of concept for feature X (3 days ago)
pick f392171 Added new feature X
pick ba9dd9a Added new elements to page design
pick df71a27 Updated CSS for new elements
pick f392171 Added new feature X
squash ba9dd9a Added new elements to page design
squash df71a27 Updated CSS for new elements
现在,如果你想挤压最后三个提交,那么
git rebase -i HEAD~3
通过这样做,您将像这样进入编辑器
* df71a27 - (HEAD feature_x) Updated CSS for new elements (4 minutes ago)
* ba9dd9a - Added new elements to page design (15 minutes ago)
* f392171 - Added new feature X (1 day ago)
* d7322aa - (origin/feature_x) Proof of concept for feature X (3 days ago)
pick f392171 Added new feature X
pick ba9dd9a Added new elements to page design
pick df71a27 Updated CSS for new elements
pick f392171 Added new feature X
squash ba9dd9a Added new elements to page design
squash df71a27 Updated CSS for new elements
编辑要像这样挤压的对象
* df71a27 - (HEAD feature_x) Updated CSS for new elements (4 minutes ago)
* ba9dd9a - Added new elements to page design (15 minutes ago)
* f392171 - Added new feature X (1 day ago)
* d7322aa - (origin/feature_x) Proof of concept for feature X (3 days ago)
pick f392171 Added new feature X
pick ba9dd9a Added new elements to page design
pick df71a27 Updated CSS for new elements
pick f392171 Added new feature X
squash ba9dd9a Added new elements to page design
squash df71a27 Updated CSS for new elements
完成后,保存并退出编辑器。Git现在将把提交压缩成一个。全部完成