如何取消还没 push 的 commit ?

2014-08-27 18:32:20 +08:00
 for8ever
8329 次点击
所在节点    git
17 条回复
yinheli
2014-08-27 18:38:03 +08:00
reset
kookxiang
2014-08-27 18:40:50 +08:00
可以reset退版本,也可以强制pull
poke707
2014-08-27 18:59:45 +08:00
若进一步取消代码改动可以加reset 的hard模式,
若只是想更改上次commit本身可以用commit的amend参数
aa65535
2014-08-27 19:09:05 +08:00
取消最后一次提交: git reset --soft HEAD~1 后面数字可以看作是取消的 commit 次数。
--soft 参数表上只取消 commit 但保留文件的修改(相当于git add 之后的的状态),如果你想连修改都不要的话就用 --hard 参数。
slixurd
2014-08-27 19:09:48 +08:00
我一直都是用git stash
还能保证不会丢失修改之后的数据= =,防作死必备
bombless
2014-08-27 19:36:24 +08:00
git stash+1
witcher42
2014-08-27 19:50:47 +08:00
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 ,基本上不会有丢失数据的情况。
SunLn
2014-08-27 21:03:33 +08:00
git log
看到某个commit的hash后

git reset --hard hash
Julyyq
2014-08-27 22:09:53 +08:00
取消上一次commit: git reset HEAD^
TankyWoo
2014-08-27 22:11:36 +08:00
git status 不是有提示吗?楼主没看?
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 特别强大,几乎可以实现所有修改历史的需求。
kimmykuang
2014-08-28 09:54:22 +08:00
看需要,git reset --soft/--hard HEAD^n,n表示回退几个commit
billlee
2014-08-28 10:29:14 +08:00
@kimmykuang 回退多个 commits 是 HEAD~n 吧
for8ever
2014-08-28 10:35:02 +08:00
谢谢各位,已经解决了,git log 查找到那个 commit 的 hash ,然后 git reset --hard hash 回退到那个 commit 之前的版本,再 git pull 就 OK 了。
goodxxx
2014-08-28 17:05:31 +08:00
good.
julyclyde
2014-08-29 16:52:23 +08:00
checkout到旧的commit作为HEAD就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/130251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX