这就是我在我所谓的稳定分支上所做的事情......
% git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded alpha-0.3.0 to master.
% git status
# On branch alpha-0.3.0
# Your branch is ahead of 'origin/alpha-0.3.0' by 53 commits.
#
nothing to commit (working directory clean)
% git push
Fetching remote heads...
refs/
refs/heads/
refs/tags/
refs/remotes/
'refs/heads/master': up-to-date
updating 'refs/heads/alpha-0.3.0'
from cc4b63bebb6e6dd04407f8788938244b78c50285
to 83c9191dea88d146400853af5eb7555f252001b0
done
'refs/heads/unstable': up-to-date
Updating remote server info
Run Code Online (Sandbox Code Playgroud)
这是我后来意识到的一个错误.我想撤消整个过程,并将alpha-0.3.0分支恢复到原来的状态.
我该怎么办?
CB *_*ley 866
您需要确保此存储库的其他用户没有获取不正确的更改,或者尝试在要删除的提交之上构建,因为您要回滚历史记录.
然后你需要'强制'推送旧的参考.
git push -f origin last_known_good_commit:branch_name
Run Code Online (Sandbox Code Playgroud)
或者在你的情况下
git push -f origin cc4b63bebb6:alpha-0.3.0
Run Code Online (Sandbox Code Playgroud)
您可能已receive.denyNonFastForwards在远程存储库上设置.如果是这种情况,那么您将收到包含该短语的错误[remote rejected].
在这种情况下,您将不得不删除并重新创建分支.
git push origin :alpha-0.3.0
git push origin cc4b63bebb6:refs/heads/alpha-0.3.0
Run Code Online (Sandbox Code Playgroud)
如果这不起作用 - 可能是因为您已receive.denyDeletes设置,那么您必须直接访问存储库.在远程存储库中,您必须执行类似以下管道命令的操作.
git update-ref refs/heads/alpha-0.3.0 cc4b63bebb6 83c9191dea8
Run Code Online (Sandbox Code Playgroud)
Ben*_*ong 148
我相信你也可以这样做:
git checkout alpha-0.3.0
git reset --hard cc4b63bebb6
git push origin +alpha-0.3.0
Run Code Online (Sandbox Code Playgroud)
这与上一个方法非常相似,只是你不必在远程仓库中捣乱.
neo*_*eye 93
git revert 比这里提出的一些方法危险性小:
prompt> git revert 35f6af6f77f116ef922e3d75bc80a4a466f92650
[master 71738a9] Revert "Issue #482 - Fixed bug."
4 files changed, 30 insertions(+), 42 deletions(-)
prompt> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
prompt>
Run Code Online (Sandbox Code Playgroud)
用您自己的提交替换35f6af6f77f116ef922e3d75bc80a4a466f92650.
小智 37
git reset --hard HEAD^
git push origin -f
Run Code Online (Sandbox Code Playgroud)
这将从您的本地设备以及 Github 中删除最后一次提交
Sab*_*osh 35
如果您在共享仓库工作,接受的解决方案(来自@charles bailey)非常危险.
作为最佳实践,推送到共享的远程仓库的所有提交应被视为"不可变".请改用"git revert":http: //www.kernel.org/pub/software/scm/git/docs/user-manual.html#fixing-mistakes
https://git-scm.com/book/be/v2/Git-Basics-Undoing-Things
cur*_*mil 29
一种方法,而不会丢失您想要的更改:
git reset cc4b63b
git stash
git push -f origin alpha-0.3.0
git stash pop
Run Code Online (Sandbox Code Playgroud)
然后,您可以选择要推送的文件
Rus*_*hta 18
另一种方法:
git push origin --delete <branch_name>)小智 14
git push origin +7f6d03:master
Run Code Online (Sandbox Code Playgroud)
这会将您的回购还原为提到的提交号
Jay*_*min 10
撤消多次提交git reset --hard 0ad5a7a6(只提供提交SHA1哈希)
撤消上次提交
git reset --hard HEAD~1(对最后一次提交的更改将被删除)git reset --soft HEAD~1(对最后一次提交的更改将作为未提交的本地修改提供)
场景1:如果要撤消上次提交,请说8123b7e04b3,下面是命令(这对我有用):
git push origin +8123b7e04b3^:<branch_name>
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
Total 0 (delta 0), reused 0 (delta 0)
To https://testlocation/code.git
+ 8123b7e...92bc500 8123b7e04b3^ -> master (forced update)
Run Code Online (Sandbox Code Playgroud)
附加信息: 场景2:在某些情况下,您可能希望通过上一个命令恢复刚刚撤消的内容(基本上撤消撤消),然后使用以下命令:
git reset --hard 8123b7e04b3
Run Code Online (Sandbox Code Playgroud)
输出:
HEAD is now at cc6206c Comment_that_was_entered_for_commit
Run Code Online (Sandbox Code Playgroud)
更多信息:https://github.com/blog/2019-how-to-undo-almost-anything-with-git
小智 7
您可以使用命令重置
git reset --soft HEAD^1
Run Code Online (Sandbox Code Playgroud)
然后:
git reset <files>
git commit --amend
Run Code Online (Sandbox Code Playgroud)
和
git push -f
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
571691 次 |
| 最近记录: |