Commit and push changes after going back to a particular revision in the repository?
我们需要回到一个特定的承诺。对master做了一些意外的更改。试图恢复它挖得太深,所以主人是在一个坏的状态。我们现在想让大师回到66ADA4CC61D62AFC。
根据Git,恢复到特定的提交:
1 2 | $ git reset --hard 66ada4cc61d62afc HEAD is now at 66ada4c Updated documentation |
然后,尝试提交:
1 2 3 4 5 6 7 | $ git add *.h *.cpp $ git commit -m"Go back to Commit 66ada4cc61d62afc" On branch master Your branch is behind 'origin/master' by 16 commits, and can be fast-forwarded. (use"git pull" to update your local branch) nothing to commit, working directory clean |
号
最后:
1 2 3 4 5 6 7 8 | $ git push To https://github.com/weidai11/cryptopp.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/weidai11/cryptopp.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. |
现在,一切都在我想要的地方。我不知道为什么Git有麻烦,也不知道Git在说什么。如果吉特照他说的去做肯定会很好。但是,唉,吉特让每一个简单的任务都变得困难,它会造成不适当的痛苦和痛苦。
如何提交和推动更改?
快速解决方案:
这将强制推送并覆盖远程历史记录。如果有其他人正在使用此远程存储库:不要这样做!
从远程存储库中提取数据的其他人将遇到问题,因为他们的历史不再是存储库历史的子集。大多数项目禁止强制推送。
更好的解决方案是为您的更改创建一个新的提交。要么
git revert hashes 或- 埃多克斯1〔5〕
然后,在历史记录的基础上创建一个新的提交,描述返回到所需版本所需的更改。
使用
为了避免简单地将一组错误替换为另一组错误的部分解决方案,我执行了以下操作:
1 2 3 4 5 6 7 8 9 10 | git clone https://github.com/weidai11/cryptopp.git cryptopp-old git clone https://github.com/weidai11/cryptopp.git cryptopp-new cd cryptopp-old git checkout 66ada4cc61d62afc cd ../cryptopp-new cp ../cryptopp-old/*.h ../cryptopp-old/*.cpp . git commit -am"Go back to Commit 66ada4cc61d62afc" |