我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
如何使用,重置 -- 软的或重置 -- 硬的?
@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。
其他回答
另一种方式:
检查您想要返回的分支, 然后将本地工作副本重置到您想要在远程服务器上成为最新一份的承诺( 它将在离别后进行的一切) 。 要做到这一点, 请在 SupportTree I右键点击并选中的“ 重置 BranchNAME 以进行此承诺 ” 。
然后导航到仓库的本地目录并运行此命令 :
git -c diff.mnemonicprefix=false -c core.quotepath=false push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME
这将删除您本地仓库中当前一个后的所有承诺, 但只删除该分支 。
(2015年等)
如果你在视觉工作室无法同步, 因为不允许你按到像“开发”那样的分支, 那么就像我努力的一样, 在视觉工作室NEITHER, REWET NOR(硬的或软的)RESET(硬的或软的)将有效。
答案是用数字标注的:
使用此命令命令 根 你的项目根 核武器 任何试图 被推推:
git reset --hard HEAD~1
备份或拉链你的文件 只是以防你不想失去任何工作,等等...
$ git commit -m 'Initial commit'
$ git add forgotten_file
$ git commit --amend
重要的是要明白,当你正在修正你的最后一项承诺时,你并没有完全用新的、更好的承诺来取代它,新的承诺将旧承诺推开,而将新承诺置于其位置。 事实上,这好像前一项承诺从未发生,也不会出现在你的存储库历史中。
修改承诺的明显价值是略微改进你的最后一项承诺,而不会用表格“Oops,忘记添加文件”或“Darn,在最后一项承诺中确定打字符”等字词来模糊你的存储库历史。
2.4 Git Basics - 撤销事情
认为我们已经有了 code. txt 文件。 我们对其做了一些修改并承诺。 我们可以以三种方式撤销此承诺, 但首先, 您应该知道什么是预置文件... 一个预设文件是一个可以承诺的文件。 如果您运行 git 状态, 此文件将会显示为绿色颜色, 如果它没有被预设用于承诺, 将会显示为红色颜色 :
调
意思是如果您承诺更改, 此文件中的更改没有被保存 。 您可以在您的舞台上添加此文件, 添加 code. txt , 然后进行更改 :
调
撤消上次承诺 :
现在,如果我们想要在不做其他任何更改的情况下撤销承诺, 我们可以使用 git 重设 -- soft HEAD * 如果我们想要撤销承诺及其更改( THIS 是危险的, 因为您的更改将会丢失) , 我们可以使用 git 重置 -- 硬 HEAD * 如果我们想要撤销承诺并删除舞台上的更改, 我们可以使用 git 重置 -- mixed HEAD* 或短格式的 git 重置 HEAD***
作为以下步骤。
步骤1
Hit git 日志
从日志列表中找到最后的硬化散列代码, 然后输入 :
步骤2
git reset <hash code>