我和我的同学一起做了一个学校项目,其中一个打破了程序的主要部分,然后把它推到了github。我有没有主要修改的项目,它的工作完美。有什么办法让我可以在没有拉动的情况下推送我的文件,并用我的文件替换坏文件吗?
答案 0 :(得分:4)
如果其他开发人员已推送相关更改,您不应该只是将其删除,而是合并两个更改。
如果开发人员推动其他有意义的更改,那么最佳解决方案就是解决冲突,并修复损坏的代码。
从你的分歧提交中,将它们移动到一个新的分支,然后合并回主人 - 解决你的冲突。
# Create a new branch with your commits
git checkout -b featureBranch
# Get master from origin
git checkout master
git pull origin master
# Add in your changes
git merge featureBranch
# Resolve Conflicts
# Push to origin
git push origin master
如果你真的想要删除他的提交(我不建议你这样做),你可以强制推送 - 这将覆盖服务器上的所有东西,包括机器上的内容
正在进行项目的其他开发人员需要采取额外的行动,因为您现在正在改变历史;不建议这样做。
git push origin master --force
还有revert
方法;这将创建一个完全反转所选提交更改的新提交;要使用它,首先需要一个干净的工作树。
# Move your commits to a new branch
git checkout -b featureBranch
# Get latest changes from master
git checkout master
git pull origin master
# Create new commit that reverses the other devs changes
git revert hashToRevert
# Pull in your additional commits
git merge featureBranch
# Push to master
git push origin master
答案 1 :(得分:2)
您可以使用git revert
命令恢复该提交。这将执行一个新的提交,撤消之前提交的所有更改,文档here:
git revert命令撤消已提交的快照。但是,而不是 从项目历史中删除提交,它会弄清楚如何 撤消提交引入的更改并附加新提交 结果内容。
完成后,您可以在还原提交的基础上推送自己的更改。