我创建了一个项目的分支,并向 our func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
let size = image.size
let widthRatio = targetSize.width / size.width
let heightRatio = targetSize.height / size.height
var newSize: CGSize
if(widthRatio > heightRatio) {
newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
} else {
newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio)
}
let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)
UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
image.draw(in: rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
添加了约40个提交。
在某个时间点,我无意间用强制推送重写了历史,因为我无法“毫无理由地”推送“ ”,有时您只是想看看世界在燃烧。
现在一切都很好,但是在我的仓库中对master
的最后100次提交也不再被认为是相同的:我看到“前面有240个提交” 代替“ 40承诺”。
是否可以获取上游主服务器并将其主服务器的提交重新建立基础,然后将其强制推回到主服务器,以便我们和他们的主机与除我的以外的所有先前提交同步?如果是这样,怎么办?请具体说明。
答案 0 :(得分:1)
我假设您有一个干净的沙箱,其中origin
指向您的fork,并且您可以通过其他URL访问上游仓库。我还假设您的沙箱中的origin/master
和master
是同步的。
基于这些假设,这应该可行:
git remote add upstream <upstream_url>
git fetch upstream
git checkout master
git rebase upstream/master
希望rebase可以工作,并且不会引入任何重复的提交。如果没有,它甚至可以突出显示您为什么必须首先强制推动。
在开始重新设置基准之前,git log --graph --decorate --all
(或gitk -all
或任何其他显示完整图形的可视Git日志替换)可能会告诉您为什么遇到麻烦。
编辑:另一种更保守的方法是使用git cherry-pick
。变基解决方案依赖于Git认识到应该共通的历史记录由upstream/master
上已经存在的提交组成。但是,您无需标识基础,就可以标识要保留的第一个提交的父级,如果您确实确实要保留40个提交,可以说origin/master~40
,然后在upstream/master
的末尾添加这些提交:
git remote add upstream <upstream_url>
git fetch upstream
git checkout master
git reset --hard upstream/master
git cherry-pick origin/master~40..origin/master
这为您提供了一个新的master
,该地址明确地从upstream/master
开始,并仅添加了您想要的新历史记录。
请注意--hard
中的git reset --hard upstream/master
:正如OP在注释中指出的那样,这是确保您在选择樱桃之前从干净状态开始的必要条件。但首先请确保您没有要保存的所有未提交内容。
健全性检查:在进行选择(或重新设置基准)之后,git diff master origin/master
应该什么也不返回,或者再次指出您需要处理的其他问题。
结束编辑
一旦完成变基或选择后,您就完全相信自己要保留的新历史记录:
git push -f origin master
应该使您的分叉恢复到upstream
之前只有40次提交。
注意:我没有测试过变基解决方案,但是根据您对情况的描述,我相当有信心它可以工作。但是,我使用成功的解决方案是类似的情况。如果您尝试使用任何一种方法,请报告您的成功或任何需要调整的错误。