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

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


当前回答

使用此命令

git checkout -b old-state 0d1d7fc32

其他回答

以下是网站:Oh shit, git!.

这里有许多解密的秘方 如何在Git 中解决事情。其中一些是:

哦,该死,我需要改变 信息在我的最后一次承诺!

git commit --amend
# follow prompts to change the commit message

哦,我无意中把什么东西 给了主人 本来该在全新的树枝上!

# Create a new branch from the current state of master
git branch some-new-branch-name
# Remove the commit from the master branch
git reset HEAD~ --hard
git checkout some-new-branch-name
# Your commit lives in this branch now :)

取决于您是否已经公开了您的前一次承诺( 插入到您的远程仓库 ) :

如何撤销本地任务

比方说我承诺了当地, 但现在我想取消那个承诺。

git log
    commit 101: bad commit    # Latest commit. This would be called 'HEAD'.
    commit 100: good commit   # Second to last commit. This is the one we want.

要让一切恢复到上次承诺之前的状态 我们需要reset之前的承诺HEAD:

git reset --soft HEAD^     # Use --soft if you want to keep your changes
git reset --hard HEAD^     # Use --hard if you don't care about keeping the changes you made

现在git log将显示我们最后的承诺已被删除 。

如何撤销公开承诺

如果您已经公开了承诺, 您将会想要创建一个新的承诺, 它将“ 撤销” 您对上一个承诺( 当前 HEAD) 所做的更改 。

git revert HEAD

你们的更改将恢复,并准备好你们承诺:

git commit -m 'restoring the file I removed by accident'
git log
    commit 102: restoring the file I removed by accident
    commit 101: removing a file we don't need
    commit 100: adding a file that we need

更多信息,请查看Git Basics - 撤销事情.

单一个命令 :

git reset --soft 'HEAD^' 

成功推翻了当地最后的承诺!

如果您想要删除错误的文件, 您应该做

git reset --soft <your_last_good_commit_hash_here>来,如果你来git status中,您会看到中转区的文件。您可以选择错误的文件,然后从中转区取下来。

喜欢下面。

git reset wrongFile1 wrongFile2 wrongFile3

您现在可以添加您需要按键的文件,

git add goodFile1 goodFile2

提交提交它们

git commit -vgit commit -am "Message"

推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推

git push origin master

但是,如果您不关心已更改的文件, 您可以硬重置到先前的良好承诺, 并将所有文件都推到服务器 。

git reset --hard <your_last_good_commit_hash_here>

git push origin master

如果您已经向服务器发布错误的文件, 您可以使用--force挂号以向服务器推动并编辑历史。

git push --force origin master

如果你打算完全撤销一个本地的承诺, 无论你改变什么你对承诺所做的, 如果你对此不担心, 执行以下命令。

git reset --hard HEAD^1

(此命令将忽略您的全部任务, 您的更改将会从您的本地工作树上完全丢失) 如果您想要撤销您的承诺, 但是您想要您在中转区域中的更改( 之前要像在git add)然后执行以下命令。

git reset --soft HEAD^1

现在,您的已执行文件将进入中转区域。 如果您想要提升文件, 您需要编辑错误的内容, 那么执行以下命令

git reset HEAD

现在承诺要将文件从舞台区域移到非舞台区域。 现在文件已准备编辑, 所以无论您改变什么, 您都想要去编辑和添加它, 并做出新的/ 新的承诺 。

更多(断线) (已存档版本)