我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。

我如何解除那些承诺?当地当地仓库?


当前回答

您可以以两种方式撤销您的 Git 承诺: 首先, 您可以使用git revert,如果你想保留你的承诺历史:

git revert HEAD~3
git revert <hashcode of commit>

第二,你可以使用git reset,它会删除你所有的承诺历史, 并带来你的头在你想要的地方。

git reset <hashcode of commit>
git reset HEAD~3

您也可以使用--hard关键字,如果有的话,我只推荐它,直到它变得非常必要。

其他回答

git reset --soft HEAD~1

git status

Output

在分母上
您的分行在“ 来源/ 主机” 前面 1 个承诺 。
(使用“ little push” 发布您的本地承诺)

拟承诺的修改:
(使用“ git reconful -- paged...” 到 unstage) 新文件 : file1

git log --oneline --graph

Output

  • 90f8bb1 (HEAD - > 主人) 第二次承诺\
  • 7083e29 初始仓库承诺

如果你有Git 外加已安装, 您可以运行git undo撤消最近的承诺。git undo 3将撤销最后三项承诺。

我更喜欢用git rebase -i对于这份工作来说, 因为一份不错的清单 出现在我可以选择摆脱承诺的地方。 它可能不如这里的其他答案直接直接, 但是它只是...感觉右右.

选择要列出多少个承诺, 然后这样引用( 加入最后 3 个)

git rebase -i HEAD~3

样本列表

pick aa28ba7 Sanity check for RtmpSrv port
pick c26c541 RtmpSrv version option
pick 58d6909 Better URL decoding support

然后 Git 将删除任何您删除的线条 。

如何撤销最后的 Git 承诺 ?

为了让一切恢复到上次承诺之前的状态 我们需要重置在总部总部之前的承诺

  1. 如果你不想保留你所做的改变:

    git reset --hard HEAD^
    
  2. 如果您想要保留您的更改 :

    git reset --soft HEAD^
    

现在检查您的 git 日志。 它会显示我们上次的承诺已被删除 。

典型基周期

在前几次答复中谈到与Git相关的命令时,我想向所有读者介绍我典型的Git周期,这可能是有益的。 这就是我如何与Git合作,

  1. 第一次从远程服务器克隆

    git clone $project

  2. 从远程拉动( 当我没有当地未完成的推动承诺) )

    git pull

  3. 将新的本地文件 1 添加到 $to_ be_ compent_ list (想象$to_ be_ compent_ list 意思是staged区域)

    git add $file1

  4. 删除从 $to_be_ composed_ list 错误添加的文件2( 假设文件2 与第 3 步一样添加, 我并不想这样做 )

    git reset $file2

  5. 正在提交 $to_ be_ compent_ list 中的文件1

    git commit -m "commit message description"

  6. 在推进前与远程仓库同步本地承诺

    git pull --rebase

  7. 冲突发生时的解决配置合并工具

    git mergetool #resolve merging here, also can manually merge

  8. 添加冲突解决文件file1:

    git add $file1

  9. 继续我先前的重新基地指挥

    git rebase --continue

  10. 启动已同步的本地最后一次任务已就绪

    git push origin head:refs/for/$branch # branch = master, dev, etc.