Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github repo squash在主服务器上提交_Github_Squash_Git Squash - Fatal编程技术网

Github repo squash在主服务器上提交

Github repo squash在主服务器上提交,github,squash,git-squash,Github,Squash,Git Squash,我正在与github repo合作,其中历史上有很多提交都是“错误修复”、“这次是实时错误修复”、“确定最终错误修复”、“最终修复” 这些都是直接交给师父的。我怎样才能把它们压扁 从他一年前的帖子上看,这听起来很糟糕。在过去的一年里有什么变化吗?今天的答案基本上是一样的:挤压这些提交是可能的,但是在Git中重写共享历史是必须极力避免的 假设您和我每人都有一个同样存在于GitHub上的某个存储库的副本: A---B---C 您注意到提交B和C实际上应该一起提交,所以您可以在本地副本中压缩这些提交

我正在与github repo合作,其中历史上有很多提交都是“错误修复”、“这次是实时错误修复”、“确定最终错误修复”、“最终修复”

这些都是直接交给师父的。我怎样才能把它们压扁


从他一年前的帖子上看,这听起来很糟糕。在过去的一年里有什么变化吗?

今天的答案基本上是一样的:挤压这些提交是可能的,但是在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现在将把提交压缩成一个。全部完成