我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
只要使用 git 重置 -- hard < last good SHA> 来重置您的更改并给予新的承诺。您也可以使用 git 检查退出 -- < bad filename> 。
其他回答
如何使用,重置 -- 软的或重置 -- 硬的?
@Kyralessa的回答:
如果您不确定该使用什么 -- Soft (我用这个公约来记住它 -- 安全性 -- 软性) 。
为什么?
如果您选择 -- 错误地选择 -- 错误地选择, 您将会失去以前没有的更改。 如果您选择 -- 错误地选择 -- 错误地选择 -- 软, 您可以通过应用额外命令而实现同样的结果 -- 硬
git reset HEAD file.html
git checkout -- file.html
完整示例
echo "some changes..." > file.html
git add file.html
git commit -m "wrong commit"
# I need to reset
git reset --hard HEAD~1 (cancel changes)
# OR
git reset --soft HEAD~1 # Back to staging
git reset HEAD file.html # back to working directory
git checkout -- file.html # cancel changes
感谢@Kyralessa。
git reset --soft HEAD~1
重置将会将您当前的 HEAD 分支倒带到指定的修订版 。
注意 -- soft 旗号 : 这样可以确保未撤销修改的更改被保存。 在运行命令后, 您会发现您的工作副本中这些更改是未承诺的本地修改 。
如果您不想保留这些更改, 请使用 -- 硬旗 。 确定只有在您确定不再需要这些更改时才这样做 。
git reset --hard HEAD~1
撤消多个提交文件
git reset --hard 0ad5a7a6
但是,记住,使用重置命令可以解除所有在你返回后的承诺:
调
要重置上一个修订版, 请永久删除所有未承诺的更改 :
git reset --hard HEAD~1
如果您想要永久撤销它, 您克隆了一些仓库 。
犯罪身份可通过以下方式识别:
git log
然后你们可以做:
git reset --hard <commit_id>
git push origin <branch_name> -f
撤消上次承诺 :
git 重设 -- s软 HEADQ 或 git 重置 -- s软 HEAD~
这将撤销最后一项承诺 。
在这里 -- 软意味着重置中。
HEAD~ 或 HEAD_ 意思是移动 在 HEAD 之前承诺。
替换上次承诺的新承诺 :
git commit --amend -m "message"
它将以新承诺取代最后一项承诺 。