我们的git项目存在问题:
pull
- 更改了错误的更改,但有未提交的本地更改我们希望摆脱远程存储库中的错误更改,然后推送好的更改。
我们对git不是很有经验,并且害怕搞砸它并失去未提交的,好的变化。我们不确定是否需要使用git revert
或git rebase
(或其他内容),以及使用哪台计算机(即来自没有良好更改的计算机?)。
答案 0 :(得分:3)
首先:不要惊慌
这是一个修订控制系统 。 它存在,因此您不能轻易丢失信息。
您可以随时保存作品:
git checkout -b RESCUE_THIS
git add .
git commit -am 'Do not loose this commit!'
从那里拿走。
我建议:
还原错误提交
git reset HEAD @ {1}#如果是最后一次提交
您需要确定要保留哪些更改并将其提交到新提交中。 注意使用git reflog
查找'HEAD @ {1} part that you want. Take your time as this can be a bit confusing when comparing to
git log`
git revert bad-commit-id#如果不是
注意找到要使用git log
还原的修订版。您可以还原多个提交。按逆时间顺序还原它们。每个恢复将导致新提交'撤消'来自该提交的机会。
如果你发现自己还原了很多提交,你可能想要改变。
强制将固定分支推送到中央仓库
origin master
或类似的从“好”客户端恢复任何剩余的工作,例如通过
git checkout master#从RESCUE_THIS
git merge --no-commit --ff RESCUE_THIS
git commit -am
git push#当你对结果真的很满意时
到那时你可以选择删除RESCUE_THIS分支。即使你这样做,它也不会在reflog过期之前消失。
免责声明:以上所有内容都充斥着有关您的设置,分支历史记录,工作流程和特定故障情况的假设。请放心,他们是受过良好教育的猜测,大部分时间都与普通的做法相吻合。 睁大眼睛然后为自己考虑一下。 作为最后的手段,您可以在'好客户'上对git仓库进行物理备份以确保安全