git
› Pro Git
› Atlassian Git Tutorial
› Pro Git 简体中文翻译
› GitX
for8ever
V2EX  ›  git

如何取消还没 push 的 commit ?

  •  1
     
  •   for8ever · Aug 27, 2014 · 9732 views
    This topic created in 4462 days ago, the information mentioned may be changed or developed.
    17 replies  •  2014-08-29 16:52:23 +08:00
    yinheli
    yinheli
    Aug 27, 2014
    1
    reset
    kookxiang
    kookxiang
    Aug 27, 2014
    2
    可以reset退版本,也可以强制pull
    poke707
    poke707
    Aug 27, 2014
    3
    若进一步取消代码改动可以加reset 的hard模式,
    若只是想更改上次commit本身可以用commit的amend参数
    aa65535
    aa65535
    Aug 27, 2014❤️1
    4
    取消最后一次提交: git reset --soft HEAD~1 后面数字可以看作是取消的 commit 次数。
    --soft 参数表上只取消 commit 但保留文件的修改(相当于git add 之后的的状态),如果你想连修改都不要的话就用 --hard 参数。
    slixurd
    slixurd
    Aug 27, 2014
    5
    我一直都是用git stash
    还能保证不会丢失修改之后的数据= =,防作死必备
    bombless
    bombless
    Aug 27, 2014
    6
    git stash+1
    witcher42
    witcher42
    Aug 27, 2014
    7
    zhibin
    zhibin
    Aug 27, 2014
    8
    git stash 只会保存未提交的修改。如果你已经 commit 了但是还没push ,stash 是没什么用的。

    如果你在 branch-a 上工作(如果没有就新建一个),你可以 git checkout -b new-branch,在 new-branch 上回退到上次提交之前(或者直接 checkout 到上次提交之前-b new-branch)。

    多用 branch 和 stash ,基本上不会有丢失数据的情况。
    SunLn
    SunLn
    Aug 27, 2014
    9
    git log
    看到某个commit的hash后

    git reset --hard hash
    Julyyq
    Julyyq
    Aug 27, 2014
    10
    取消上一次commit: git reset HEAD^
    TankyWoo
    TankyWoo
    Aug 27, 2014
    11
    git status 不是有提示吗?楼主没看?
    billlee
    billlee
    Aug 28, 2014
    12
    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
    kimmykuang
    Aug 28, 2014
    13
    看需要,git reset --soft/--hard HEAD^n,n表示回退几个commit
    billlee
    billlee
    Aug 28, 2014
    14
    @kimmykuang 回退多个 commits 是 HEAD~n 吧
    for8ever
    for8ever
    OP
    Aug 28, 2014
    15
    谢谢各位,已经解决了,git log 查找到那个 commit 的 hash ,然后 git reset --hard hash 回退到那个 commit 之前的版本,再 git pull 就 OK 了。
    goodxxx
    goodxxx
    Aug 28, 2014
    16
    good.
    julyclyde
    julyclyde
    Aug 29, 2014
    17
    checkout到旧的commit作为HEAD就行了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2034 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    ♥ Do have faith in what you're doing.