1
lonenol 2016-11-22 16:02:30 +08:00 1
本地回退,删掉远程分支,重新 push ,master 分支的话要去掉分支保护功能
|
2
alexapollo 2016-11-22 19:48:19 +08:00
reset 到上一次操作
|
3
yxzblue 2016-11-22 19:53:25 +08:00
有什么是 revert 做不到的?
|
4
cxh116 2016-11-22 19:57:17 +08:00 via Android
@yxzblue rebase 不是 merge ,用 revert 还真做不到。就跟 merge 加了 ff 参数,不会生成 commit ,一样不能用 revert 。
|
5
XiaoxiaoPu 2016-11-22 19:59:23 +08:00 3
git reflog 里找到 rebase 操作前的 hash , git check ${hash} 就可以回到操作前 master 所在的 commit ,重新建一个 master 分支,然后 git push --force origin master
|
6
hantsy 2016-11-22 22:54:58 +08:00
reset, cherry pick.
|
7
zwzmzd 2016-11-23 00:30:04 +08:00 via Android
个人觉得 5 楼方法靠谱,好多次干了挫事都是靠 reflog 救命
|
8
Rabbit52 2016-11-23 00:43:10 +08:00
reset && push -f && 通知所有人~
|
9
msg7086 2016-11-23 07:08:06 +08:00 1
我的建议,如果你实在搞不清分支间要怎么处理,那么最好还是弄个图形界面。
安利一下 SmartGit ,打开 Log 界面,把 Commit 理顺了,然后 force push 一次解决问题。 这种危险操作我真心不推荐用命令行来搞。 |
10
msg7086 2016-11-23 07:09:56 +08:00
另外说一句。如果 master 的提交被复制到了 feature 上,这种情况是他 rebase 了 master 到 feature ,而不是你标题说的 feature 给 rebase 到 master 上。后者是很安全的,我们天天在做,前者才是反向 rebase ,才是大问题。
|
11
shanjinwei 2016-11-23 08:10:21 +08:00 via Android
对此差异,修改过后上传
|
12
malkavia OP @XiaoxiaoPu 我这样试过, checkout 到之前的 hash 上之后,会丢掉所有 <生成两次 commit 的提交>
|
14
rashawn 2016-11-23 10:05:09 +08:00 via iPhone
最简单的就是 checkout 回去 新建分支 删掉远程 然后覆盖
|
15
shihty5 2016-11-23 11:28:23 +08:00
reflog 能记录下所有分支所有事件。
通过时光机回到过去某个节点,然后重新开始就好了。 真希望人生也是这样。 |
16
iluhcm 2016-11-23 15:45:24 +08:00
Sourcetree+ git reset --hard 已经拯救了无数回
|