
1 yinheli 2014-08-27 18:38:03 +08:00 reset |
2 kookxiang 2014-08-27 18:40:50 +08:00 可以reset退版本,也可以强制pull |
3 poke707 2014-08-27 18:59:45 +08:00 若进一步取消代码改动可以加reset 的hard模式, 若只是想更改上次commit本身可以用commit的amend参数 |
4 aa65535 2014-08-27 19:09:05 +08:00 取消最后一次提交: git reset --soft HEAD~1 后面数字可以看作是取消的 commit 次数。 --soft 参数表上只取消 commit 但保留文件的修改(相当于git add 之后的的状态),如果你想连修改都不要的话就用 --hard 参数。 |
5 slixurd 2014-08-27 19:09:48 +08:00 我一直都是用git stash 还能保证不会丢失修改之后的数据= =,防作死必备 |
6 bombless 2014-08-27 19:36:24 +08:00 git stash+1 |
7 witcher42 2014-08-27 19:50:47 +08:00 Let me Google that for you: http://lmgtfy.com/?q=git+revert+unpushed+commit |
8 zhibin 2014-08-27 21:01:29 +08:00 git stash 只会保存未提交的修改。如果你已经 commit 了但是还没push ,stash 是没什么用的。 如果你在 branch-a 上工作(如果没有就新建一个),你可以 git checkout -b new-branch,在 new-branch 上回退到上次提交之前(或者直接 checkout 到上次提交之前-b new-branch)。 多用 branch 和 stash ,基本上不会有丢失数据的情况。 |
9 SunLn 2014-08-27 21:03:33 +08:00 git log 看到某个commit的hash后 git reset --hard hash |
10 Julyyq 2014-08-27 22:09:53 +08:00 取消上一次commit: git reset HEAD^ |
11 TankyWoo 2014-08-27 22:11:36 +08:00 git status 不是有提示吗?楼主没看? |
12 billlee 2014-08-28 00:55:07 +08:00 1) 取消上一次 commit: git reset HEAD^ # 会保留在 stage 2) 取消上一次 commit: git reset --hard HEAD^ # 完全丢弃 3) 修改上一次的 commit: git add something git commit --amend 4) 取消倒数第三、第二个 commit: git rebase -i HEAD~3, 然后在编辑器中删除第一行和第二行后,保存退出。 5) 修改倒数第三个 commit: git rebase -i HEAD~3, 然后把第一行的 pick 改成 edit. 6) 合并倒数第三、第二个 commit: git rebase -i HEAD~3, 然后把第二行 pick 改成 squash 或 fixup git rebase --interactive 特别强大,几乎可以实现所有修改历史的需求。 |
13 kimmykuang 2014-08-28 09:54:22 +08:00 看需要,git reset --soft/--hard HEAD^n,n表示回退几个commit |
14 billlee 2014-08-28 10:29:14 +08:00 @kimmykuang 回退多个 commits 是 HEAD~n 吧 |
15 for8ever OP 谢谢各位,已经解决了,git log 查找到那个 commit 的 hash ,然后 git reset --hard hash 回退到那个 commit 之前的版本,再 git pull 就 OK 了。 |
16 goodxxx 2014-08-28 17:05:31 +08:00 good. |
17 julyclyde 2014-08-29 16:52:23 +08:00 checkout到旧的commit作为HEAD就行了 |