您可以进行强制推送。
git push -f origin branch_name
强制推送将清除远程存储库分支的所有提交历史记录,并将其替换到您的分支。
在“如何正确强制 Git 推送? ”中查看强制推送的答案。如“ Git: How to ignore fast forward and revert origin [branch] to early commit? ”中所述,强制推送可能会产生意想不到的后果,因此请检查是否相同。
在您的情况下,强制推送将是一种不正确的推送方式,因为您已经在 GitHub 上进行了先前的提交,这将删除先前提交的提交历史记录。
因此,为了保留您的提交历史记录,您可以执行以下操作:
从 git 存储库中删除所有文件,然后在此处添加新文件,然后提交更新的文件:
git rm -rf .
cp -r path/to/updated/code/* .
git add .
执行 a git status
now 将告诉您其他开发人员修改了哪些文件, agit diff
将显示那里有哪些修改。
如果一个文件一直保持不变,那么git rm
和git add
会相互抵消。
那些开发人员删除的文件仍然被删除,因为您git rm
为他们运行了但没有git add
。
一旦您对这些确实是更改感到满意,您可以使用
git commit -m "Merged new code"
潜在的陷阱:
- 只有文件模式发生了变化(755 <=> 644) - 取决于其他开发人员发送给您的代码。
- 您将丢失您的 .gitignore 文件
git rm -rf .
(以及类似的.gitattributes
文件和其他此类文件)。git reset HEAD .gitignore
在提交之前为每个此类文件重置 HEAD 。
- 不同的行终止字符(以防使用不同的开发环境),因此请适当检查它们。